git fetch和git merge远端分支的问题

因为使用git不久。同事教我的更新远端分支并merge的方法是:
先执行git fetch,然后在自己的分支执行git merge origin/同事分支。
这样来更新合并。百度了下git fetch是将远端的所有分支更新到本地的FETCH_HEAD,但为啥merge的时候仍然是merge的远端的origin/同事分支,而不是merge的FETCH_HEAD?

git fetch更新所有分支到本地FETCH_HEAD,感觉也没用啥作用,还是要执行git merge origin/同事分支来merge远程分支啊。那么git fetch为啥不能省略呢?

阅读 10.1k
2 个回答

只有 git fetch 真正读取远程的分支,然后在本地创建远程分支的一个拷贝。这个拷贝的名字叫 origin/同事分支

git merge 只是在操作远程分支在本地的一个拷贝。

远程跟踪分支是远程分支状态的引用,它们以 (remote)/(branch) 形式命名。

通常最好不要手动的移动它们,当你做任何网络通信操作时,它们会自动移动,比如我们使用的 git fetch 命令。

使用 git fetch 命令会从指定远程抓取本地没有的数据,并且更新本地数据库,移动本地的远程指针指向新的、更新后的位置。

需要注意的一点就是当抓取到新的远程跟踪分支时,本地不会自动生成一份可编辑的副本(拷贝)。

从另一方面来说它并不会修改工作目录中的内容,而只会获取数据然后让你自己合并。

如果你想省略合并的步骤的话,大多数情况下你可以使用 git pull 命令,它工作的像是先使用 git fetch 后紧接着一个 git merge 命令。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏