我有三个分支:master,task_one和task_two。我想提取其他人所做的所有更新,并将这些更新应用到我的所有工作中。
什么是正确的命令?
答案 0 :(得分:3)
由于可能存在合并冲突,因此无法自动“只更新所有内容”。因为这意味着没有好的方法可以简单地“始终保持最新”,下一个要回答的问题是:为什么需要更新?
如果您需要进行代码审核,那么
git remote update
接着是
git log refs/remotes/<remote-name>/<branch-name>
将允许您检查其他人发送的提交。
如果您想将它们与您所做的更改集成在一起(您提到变基),那么您只需要在实际操作分支之前进行更改。因此,一旦您检查了您想要处理的分支(并假设您已准备好在此时集成更改 - 不会无缘无故集成!在您准备好时进行集成! )
git pull --rebase <remote-name> <remote-branch-name>
将获取&lt; branch-name&gt;来自&lt; remote-name&gt;,然后对它进行rebase。它实际上是运行的一个快捷方式(并且相同):
git fetch <remote-name> <remote-branch-name> &&
git rebase <remote-branch-name>
您还可以为任何给定分支设置默认上游远程/分支,这样您只需键入
即可git pull --rebase
将来。这对于运行时间较长的主题非常有用。要设置默认值,请使用:
git branch --set-upstream <local-branch-name> <remote-name>/<remote-branch-name>
总之,那是:
对于你想要更新的每个分支,我一般建议不要只是经过每个分支,直到你真正准备好对它进行工作。
如果正在积极开发“master”,正在积极开发“remote-master”(并且应该重新定位),而“task_one”和“task_two”基于“master”,而不是直接基于“master” remote-master“,它可能只是从”master“中拉出--rebase,而不是任何任务分支,而是在master上重新定义那些。例如:
尽管如此,git pull --rebase&lt; remote&gt;掌握,偶尔与git rebase master混合,可能很好地“做正确的事”,这取决于你的历史的复杂性。不要依赖它,但要注意这种可能性。了解“git patch-id”和“git rebase”如何交互,以及“git rebase”如何在您的工作流程基于简化之前与合并一起使用,但根据您的工作流程,这可以为您节省几个步骤。
答案 1 :(得分:1)
我会从master:git checkout -b merge_work
然后合并task_one:git merge task_one
然后我会修复任何冲突然后合并task_two git merge task_two
再次修复冲突。
完成所有操作后,请转到掌握git checkout master
合并merge_work:git merge merge_work
注意:这假设您的所有分支都已在本地。