我有三个分支:master、task_one 和 task_two。我想提取其他人所做的所有更新,并将这些更新应用到我的所有工作中。
正确的命令是什么?
我有三个分支:master、task_one 和 task_two。我想提取其他人所做的所有更新,并将这些更新应用到我的所有工作中。
正确的命令是什么?
由于潜在的合并冲突,没有自动“更新所有内容”的好方法。因为这意味着没有简单的“始终保持最新”的好方法,所以下一个要回答的问题是:为什么需要更新?
如果您需要他们进行代码审查,那么
git remote update
其次是
git log refs/remotes/<remote-name>/<branch-name>
将让您检查其他人发送的提交。
如果您想将它们与您所做的更改集成(您提到变基),那么您只需要在实际对分支进行工作之前进行更改。所以,一旦你检查了你想要处理的分支(并且假设你现在已经准备好集成更改——不要无缘无故地集成!当你准备好时集成!)
git pull --rebase <remote-name> <remote-branch-name>
将从 <remote-name> 获取 <branch-name>,然后对其进行 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”正在积极开发中(并且应该rebase-to),而“task_one”和“task_two”是基于“master”,而不是直接基于“remote-master” ”,只从“master”而不是任何任务分支中提取 --rebase 可能是有意义的,而是将它们重新设置在 master 之上。例如:
虽然真的, git pull --rebase <remote> master 与偶尔的 git rebase master 混合在一起,很可能“做正确的事”,具体取决于您历史的复杂性。不要依赖它,但要意识到这种可能性。了解“git patch-id”和“git rebase”如何交互,以及“git rebase”如何在您的工作流程基于该简化之前进行合并,但取决于您的工作流程,这可以为您节省几个步骤。
I would create a new local branch "merge_work" from master: git checkout -b merge_work
Then merge task_one: git merge task_one
I would then fix any conflicts then merge task_two git merge task_two
again fix the conflicts.
Once that is all done move to master git checkout master
The merge merge_work: git merge merge_work
Note: This assumes all your branches are already local.