原谅我对git
的浅薄理解,但我经常看到这种模式,我想知道是否有必要。我看到有人这样做(在my-dev-branch
工作,从master
分支):
git checkout master
git pull
git checkout my-dev-branch
git merge master
你可以通过以下方式实现同样的目标:
git fetch
git merge master
甚至:
git merge origin/master
答案 0 :(得分:1)
有两个概念在起作用,还有两种类型的合并正在发生。第一种类型的合并是在执行前两个命令时发生的合并:
git checkout master
git pull
假设您已将pull策略设置为合并(而不是rebase),则git pull
分支上的master
将首先fetch
来自远程{{1}}的所有更改然后将它们合并到这个分支的本地副本中。
发生的第二次合并是当您执行以下两个命令时:
master
这会切换到git checkout my-dev-branch
git merge master
,然后将本地my-dev-branch
分支合并到其中。
现在,事情变得有趣了。假设你这样做:
master
事实证明这与你原来做的事情是一样的:
git checkout master
git fetch
git merge origin/master
运行git checkout master
git pull
将更新跟踪遥控器的特殊本地分支。在git fetch
的情况下,我希望将此分支称为master
。因此,通过将此远程跟踪分支合并到您的本地origin/master
,您实际上正在执行与合并远程相同的操作。