'git remote update','git fetch'和'git pull'有什么区别?

Dav*_*cia 57 git

我现在开始和Git玩了,我有点困惑.对我来说,看起来有很多选择可以做同样的事情.我现在的问题是以下命令之间的区别是什么:

  • git远程更新
  • git fetch
  • git pull

还有哪一个更适用于更新远程分支的本地副本?

Mak*_*oto 69

git remote update 将更新您的所有分支集以跟踪远程分支,但不会合并任何更改.

git fetch 将仅更新您所在的分支,但不会合并任何更改.

git pull将更新合并您当前分支的任何远程更改.这将是您用于更新本地分支的那个.

  • 另请参阅http://stackoverflow.com/a/17512004/994153中的非常完整的答案,其中描述了`git fetch --all`一次不存在,所以`git remote update`更有用.现在`--all`被添加到`git fetch`中,`git remote update`并不是必需的. (14认同)
  • 这个答案有几个错误.大多数情况下,它们来自于将*远程跟踪分支*与常规分支混淆,这是一个很大的错误.`git fetch`不会更新你所在的"分支".但它确实更新了远程"origin"的所有远程跟踪分支或者当前远程的上游跟踪分支的远程. (8认同)
  • 您是否知道通过使用refspecs实际上可以使用fetch进行快进合并?:`git fetch origin master:master`.这只有在你没有`master`签出的情况下才有效,因为Git必须移动分支指针,如果你当前在分支上,它将不会这样做. (6认同)
  • 如果你愿意,`git fetch`会更新其他分支.试试`git fetch --all` (5认同)
  • 'get fetch'似乎在我执行它时获取所有分支,即使不使用--all开关.(Git for windows 2.10.0.1) (5认同)
  • `git fetch --all` 不会获取所有分支;它从所有遥控器获取。 (5认同)