Git 签出和#x2B之间的差异;并拉
假设我的git回购有两个分支:Git 签出和#x2B之间的差异;并拉,git,git-merge,Git,Git Merge,假设我的git回购有两个分支: 主人 试验 在我的本地回购协议中,我当前在Master上,我希望合并Test的更新版本 我要做的是: git checkout Test git pull git checkout Master git merge Test (第二行可能没用.) 据我所知,这一行: git pull origin Test (在第一个版本中,这是“git pull origin/Test”,这要感谢@Tim来修复它) 应该使我的主分支处于类似的状态(即,它将包括来自测试的更改
git checkout Test
git pull
git checkout Master
git merge Test
(第二行可能没用.)
据我所知,这一行:
git pull origin Test
(在第一个版本中,这是“git pull origin/Test”,这要感谢@Tim来修复它)
应该使我的主分支处于类似的状态(即,它将包括来自测试的更改)。
我知道pull等于fetch+merge,所以我现在有点困惑
问题是:上述两种方法之间有什么区别?从
Master
分支运行以下命令:
git pull origin Test
避免为了拉取而必须将分支更改为Test
。这相当于:
git fetch origin Test && git merge origin/Test
但更重要的是,只有在合并可以通过快进完成的情况下,Git才会进行合并。如果不可能,那么您必须进行显式合并
我可以提供以下工作流作为git pull origin Test的替代方案:
# from Master
git fetch origin
git merge origin/Test
上述两个班轮使用来自远程的最新更改更新本地跟踪分支
原点/测试
。然后,它将Test
直接合并到Master
分支中。请注意,我们不必将分支从Master
切换;整个合并不需要执行git签出
。Git将始终使用这种方法进行合并,即使这种合并会导致冲突。您可以从本地主分支运行“Git pull origin Test”吗?在这种情况下,会发生什么?@Desmond我根据你最近的编辑编辑了我的答案。我建议的方法没有改变。回答得很好。非常感谢。这相当于git-fetch-origin测试;git merge origin/Test
-即,它使用更新的远程跟踪origin/Test
参考。(在1.8.4之前的Git版本中,这种特定的Git fetch
无法更新origin/Test
,因此您必须使用Git merge fetch\u HEAD
,但我们可以假设Git>=2.0,例如。)@torek谢谢,这是一个打字错误。我不知道2.0版能用。很高兴再次见到你。