git pull命令输出消息意味着进入哪个分支
假设远程回购上有一个远程分支git pull命令输出消息意味着进入哪个分支,git,git-branch,git-pull,git-remote,Git,Git Branch,Git Pull,Git Remote,假设远程回购上有一个远程分支br1签出,本地回购上有一个master分支 命令1:如果我执行“git pull origin br1:br1”,它将远程br1拉入本地br1,并显示: 9188a5d..97d4825 br1->br1 9188a5d..97d4825 br1->原点/br1 命令2:如果我只执行一个“git pull”,它会将远程br1拉入本地master,但它只显示以下内容: 9188a5d..97d4825 br1->原点/br1 我希望它也会显示类似“br1-
br1
签出,本地回购上有一个master
分支
- 命令1:如果我执行“
”,它将远程git pull origin br1:br1
拉入本地br1
,并显示:br1
9188a5d..97d4825 br1->br1 9188a5d..97d4825 br1->原点/br1
- 命令2:如果我只执行一个“
”,它会将远程git pull
拉入本地br1
,但它只显示以下内容:master
9188a5d..97d4825 br1->原点/br1
br1->master
”的内容。为什么它没有显示这一点
“br1->br1
”是否意味着将远程br1
拉入本地br1
那“br1->origin/br1
”是什么意思
更新:在VonC的帮助下,我得出了以下结论:
更新所有跟踪分支git pull
表示遥控器上的br1->origin/br1
被拉入本地跟踪分支br1
origin/br1
将远程git拉入原点br1:br1
拉入本地br1
和br1
。之后的消息意味着相同的变更集也被拉入当前签出分支(消息是原点/br1
,它不显示更新…
):br1->master
$git拉起点br1:br1 beb48a4..b344dd1 br1->br1 beb48a4..b344dd1 br1->原点/br1 更新cca5a9b..b344dd1 快进 文件2 | 0 文件3 | 0 4个文件已更改,0个插入(+),0个删除(-)
- 以前我认为git pull拉入本地主机。事实并非如此。就是说,
做到了这一点git-pull-origin br1:br1
更新2:根据torek的解释,具体问题是命令
git pull origin br1:br1
在一系列其他操作之后将远程br1
拉入FETCH\u HEAD
,然后将FETCH\u HEAD
合并到当前分支上 任何带有origin/xxxx
的行表示a(is+)的git fetch
部分已更新a。从那时起就是这样 如果我只做一个“git拉”,它会将远程br1拉入本地主服务器 这取决于
git config branch.b1.merge
,它指示git pull
的git merge部分在哪里合并。通过执行
git pull b1:b1
,您将覆盖该配置并指示合并在本地b1
分支中进行
另请参见的结果,以查看哪个本地分支正在跟踪哪个远程分支
我希望它也会显示类似“br1->master”的内容。为什么它没有显示这一点
可能
master
已经在97d4825
警告:长。TL;DR版本:您正在查看git-fetch
输出,git-fetch
根本不会影响您的master
,影响您的master
的是git-merge
部分。但是,您的git fetch
正在更新远程跟踪分支origin/br1
,在一种情况下更新甚至创建本地分支br1
git pull
是一个方便的脚本
始终记住,git pull
只是一个方便的脚本,它为您运行另外两个git命令:首先,git pull
将您的参数传递给git fetch
。完成后,git pull
将运行git merge
(或者,如果有指示,git rebase
),但原始问题中引用的所有操作都纯粹发生在git fetch
中。(在“更新”部分有一点来自于git merge
,我稍后会谈到。)
如果未向git pull
提供远程参数,则pull
脚本将从当前分支的配置中提取一个远程参数。在这种情况下,它提取的一个显然是origin
。因此,如果运行git-pull
而不指定origin
,实际上就是在运行git-pull-origin
如果您没有为git pull
提供refspec参数,那么pull
脚本将从当前分支的配置中提取一个非常简单的参数,在本例中,无论您从git config--get branch.master.merge
中看到什么,它显然是br1
。因此,这意味着如果运行git pull origin
,实际上就是在运行git pull origin br1
.1
同样,所有这些都被传递到git fetch
,因此无论您运行git pull
、git pull origin
、还是git pull origin br1
,所有这些都会调用:
git fetch origin br1
(您也可以手动执行此操作,您将看到上面的内容)
稍后,我们将在下面访问git fetch origin br1:br1
关于可能的误解的背景
让我们再次简要地看一下您的设置语句:
假设远程回购上有一个远程分支br1
签出,本地回购上有一个master
分支
当前在远程上签出的分支(如果有)与fetch
基本无关。fetch
要做的第一件事(或足够早的一件事)是连接到远程设备,并要求它提供所有引用及其对应SHA-1的列表(通过运行git ls remote
,您可以看到git fetch
可以看到什么)。遥控器的HEAD
包含在该列表中,这允许您指示fetch
使用它,但如果您不这样做,您的fetch
只会忽略它(遥控器)
$ git fetch origin
9188a5d..97d4825 br1 -> origin/br1
* branch name -> FETCH_HEAD