【问题标题】:Git rebase master and multiple branchesGit rebase master 和多个分支
【发布时间】:2012-09-05 22:02:14
【问题描述】:

我有三个分支:master、task_one 和 task_two。我想提取其他人所做的所有更新,并将这些更新应用到我的所有工作中。

什么是正确的命令?

【问题讨论】:

  • 您到底想要什么作为最终结果,即在您的本地 git 存储库中,哪些分支会发生什么变化。例如,您是否想要远程更改以及本地主分支中的所有 task_one 和 task_two 更改,或者您只是希望本地应用每个相应分支的远程更改

标签: git rebase git-rebase git-pull git-fetch


【解决方案1】:

由于潜在的合并冲突,没有自动“更新所有内容”的好方法。因为这意味着没有简单的“始终保持最新”的好方法,所以下一个要回答的问题是:为什么需要更新?

如果您需要他们进行代码审查,那么

git remote update

紧随其后

git log refs/remotes/<remote-name>/<branch-name>

将让您检查其他人发送的提交。

如果您想将它们与您所做的更改集成(您提到变基),那么您只需要在实际对分支进行工作之前进行更改。因此,一旦您检查了要处理的分支(并假设您现在已准备好集成更改 - 不要无缘无故地集成!准备好时集成! )

git pull --rebase <remote-name> <remote-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>

总之就是:

  • git 结帐
  • git pull --rebase

对于您要更新的每个分支,需要注意的是,我通常建议不要简单地遍历每个分支,直到您真正准备好对其进行工作。

如果“master”正在积极开发中,“remote-master”正在积极开发中(并且应该rebased-to),而“task_one”和“task_two”是基于“master”,而不是直接基于“ remote-master”,只从“master”而不是任何任务分支中提取 --rebase 可能是有意义的,而是在 master 之上重新设置这些分支。例如:

  • git checkout master
  • git pull --rebase master
  • git checkout
  • git rebase master

虽然真的, git pull --rebase master 与偶尔的 git rebase master 混合,很可能“做正确的事”,这取决于你历史的复杂性。不要依赖它,但要意识到这种可能性。了解“git patch-id”和“git rebase”如何交互,以及“git rebase”如何在您的工作流程基于该简化之前进行合并,但取决于您的工作流程,这可以为您节省几个步骤。

【讨论】:

    【解决方案2】:

    我会从 master 创建一个新的本地分支“merge_work”: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

    注意:这假设您的所有分支机构都已经在本地。

    【讨论】:

      猜你喜欢
      • 2012-07-03
      • 2021-08-18
      • 1970-01-01
      • 2013-03-14
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-14
      相关资源
      最近更新 更多