将一项更改合并到 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 中的多个分支的主要内容,如果未能解决你的问题,请参考以下文章