您列出的步骤将起作用,但是还有更长的途径可以为您提供更多选择:
git checkout dmgr2 # gets you "on branch dmgr2"
git fetch origin # gets you up to date with origin
git merge origin/master
该fetch
命令可以在之前的任何时间完成merge
,即,您可以交换获取和结帐的顺序,因为fetch
只需转到命名的remote(origin
)并对它说:“给我所有我没有的东西”,即所有分支上的所有提交。它们被复制到您的存储库中,但以在远程上命名origin/branch
的任何分支命名branch
。
此时,您可以使用任何查看器(git log
,gitk
等)查看您没有的“内容”,反之亦然。有时,这仅对温暖的模糊感觉有用(“啊,是的,这实际上是我想要的”),有时对完全更改策略很有用(“哇,我还不想要那种东西”)。
最后,该merge
命令将给定的提交(您可以将其命名为)进行origin/master
任何操作,以将该提交及其祖先引入到运行时所在的任何分支上merge
。您可以插入--no-ff
或--ff-only
阻止快进,也可以仅在结果为快进时合并(如果愿意)。
使用序列时:
git checkout dmgr2
git pull origin master
该pull
命令指示git运行git fetch
,然后在道德上等效于git merge origin/master
。因此,这几乎与手动执行两个步骤相同,但是有一些细微的差异可能对您而言不太重要。(特别是fetch
by所执行的步骤只会pull
带来,并且不会更新您的存储库中的ref:1任何新的提交只会被特殊引用引用。) origin/master
FETCH_HEAD
如果使用更明确的信息git fetch origin
(然后可以选择环顾四周),然后进行git merge origin/master
排序,则还可以使您自己的本地设备master
与远程设备保持最新状态,而只有一个fetch
在网络上运行:
git fetch origin
git checkout master
git merge --ff-only origin/master
git checkout dmgr2
git merge --no-ff origin/master
例如。
1这第二部分已经更改,我在git 1.8.4中说了“已修复”,现在它会适时地更新“远程分支”引用。(正如发行说明所述,这是一个故意的设计决定,它会跳过更新,但事实证明,越来越多的人喜欢git更新它。如果您希望使用旧的远程分支SHA-1,则默认将其保存在,因此可以从reflog中恢复。这还启用了新的git 1.9 / 2.0功能,用于查找上游基准。