将一项更改合并到 Git 中的多个分支

Posted

技术标签:

【中文标题】将一项更改合并到 Git 中的多个分支【英文标题】:Merging one change to multiple branches in Git 【发布时间】:2011-12-16 01:17:33 【问题描述】:

我习惯于拥有一个主分支(master)并在主题分支中工作。但是我现在正在开发一个有两个主要分支(主分支和实验分支)的项目,我不确定如何最好地将我的主题分支合并到两个分支中?

这是正确的做法吗?如果没有,谁能告诉我正确的方法。

(master)$ git checkout -b bugfix
# do bug fix here
(bugfix)$ git commit -a -m 'Fixed bug.'
(bugfix)$ git checkout master
(master)$ git merge bugfix

(master)$ git checkout bugfix
(bugfix)$ git rebase experimental
(bugfix)$ git checkout experimental
(experimental)$ git merge bugfix

谢谢。

【问题讨论】:

【参考方案1】:

不要做变基,你已经准备好了。只需将您的 bugfix 分支合并到您需要的每个分支中

(master)$ git checkout -b bugfix
# do bug fix here
(bugfix)$ git commit -a -m 'Fixed bug.'
(bugfix)$ git checkout master
(master)$ git merge bugfix

(bugfix)$ git checkout experimental
(experimental)$ git merge bugfix

在执行 rebase 时,您创建的提交类似于已合并的提交,但有所不同。在 checkout+merge 之后执行 rebase 基本上等同于挑选修复错误的提交。

【讨论】:

谢谢。这样做,只会在master和experimental中显示合并提交吗?我可以这样做以显示我的主题分支提交吗?在这里使用 Git 通常会做什么? 合并bugfix 后,master 和experiment 将包含所有可从bugfix 访问的提交(使用git log bugfix 显示它们)。 好的,谢谢,最后当主题分支中只有 1 个提交时,我可以避免单独的合并提交出现在 master 和 Experiment 中吗? 不确定这是否一直有效。如果您的错误修复分支与实验性分支完全不同怎么办。您将遇到冲突,并且合并将显示比您实际尝试合并的文件更多的文件。如果不重新同步源分支和目标分支,你怎么能让它一直工作? @Kingname 在这种情况下,对于如此高度分歧的分支,我建议简单地进行两次修复:每个分支上一次提交。当然,您可以使用 git cherry-pick 将提交的补丁文本复制到另一个分支。

以上是关于将一项更改合并到 Git 中的多个分支的主要内容,如果未能解决你的问题,请参考以下文章

Git将修补程序合并到多个分支

在 Git 中合并但覆盖更改

如何将本地未提交的更改合并到另一个 Git 分支?

如何在不采用其中更改的情况下将 git 分支声明为合并?

撤消 Git 分支提交和合并

显示直接提交到分支的提交,忽略 Git 中的合并