git pull vs git-fetch有些困惑

时间:2013-12-12 17:11:19

标签: git git-pull git-fetch

所以 - 有人可以澄清这个:

我跑:

git pull origin master  
git status

然后它会改变并说:

your branch is ahead of origin/master ... blahblah by 6 commits...

然后我跑

git fetch
git status

它说:

# On branch master
nothing to commit (working directory clean)

所以 - 我认为默认情况下git pull会执行git fetch - 那么为什么在没有额外git fetch的情况下它会“提前6次提交”?

1 个答案:

答案 0 :(得分:2)

git status中的“提前或后面的X提交”文本基于当前分支的跟踪分支的状态; remotes/origin/master如果您在master上,则为git pull

当您同时指定远程和分支运行FETCH_HEAD时,它会获取新提交并将它们合并到当前分支,但它更新origin的远程跟踪分支。相反,它指向刚刚提交的提交为git fetch

另一方面,在没有指定参数的情况下运行git pull更新所有远程跟踪分支,因此它会消息消失。没有参数的{{1}}也是如此。

一个微妙的问题,我自己已经多次打过!我希望git在针对特定遥控器的每次提取时更新所有远程跟踪分支。