关于git pull和git fetch的一些混淆

some confusion on git pull vs git-fetch

本问题已经有最佳答案,请猛点这里访问。

所以-有人能澄清这一点吗?

我跑:

1
2
git pull origin master  
git status

然后它拉动变化并说:

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

当我奔跑的时候

1
2
git fetch
git status

它说:

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

所以-我认为git pull是git默认获取的-那么为什么它说"提前6次提交",没有额外的git fetch


git status中的"前进或后退x提交"文本基于当前分支的跟踪分支的状态;例如,如果您在master上,则为remotes/origin/master

当您在指定了远程和分支的情况下运行git pull时,它会获取新的提交并将它们合并到当前分支,但不会更新源站的远程跟踪分支。相反,它指出了作为FETCH_HEAD的刚刚获取的提交。

另一方面,在没有指定参数的情况下运行git fetch,确实会更新所有的远程跟踪分支,因此会使消息消失。没有论据的git pull也是这样。

一种微妙的感觉,我自己打了很多次!我希望Git在每次获取特定远程文件时更新所有远程跟踪分支。