5

典型使用场景:

我有 master、branch_foo 和 branch_bar。所有都是最新的。现在,我做了一个“git checkout master”并修复错误。

可以说修复是在所有分支上处于相同状态的跟踪文件上 - 即。在修复之前,每个分支的文件差异不会导致任何差异。

有没有办法将此修复提交到所有分支?

4

3 回答 3

9

常见的做法是“向上合并”。来自man gitworkflows

始终将您的修复提交到需要它们的最旧的受支持分支。然后(定期)将集成分支向上合并。

这提供了一个非常受控的修复流程。如果你注意到你已经对 maint 中也需要的 master 应用了一个修复,你需要向下选择它(使用 git-cherry-pick(1))。这会发生几次,除非您经常这样做,否则无需担心。

第一种方法当然是首选——最好在你的 repo 中只提交一次,并且能够查看它是如何进入每个分支的历史记录。然而,生活并不完美,你有时会发现自己属于第二类。如果这种情况变得足够普遍,您也许可以编写一个脚本,例如

multi-cherry-pick <commit> <branch> [<branch>...]

它依次检查每个分支并挑选给定的提交。

于 2009-10-06T19:35:25.010 回答
5

我期待git cherry-pick的是你想要的。

将修复提交到第一个分支后,您可以使用git cherry-pick将其合并到其他每个分支中。

这个关于 SO 的相关问题可能很有趣: Git & Working on multiple branches

于 2009-10-06T19:33:22.333 回答
5

就在这里。在单独的主题(功能)分支上进行此提交(分支最旧的分支/最早的状态),然后将此主题分支合并到您想要的任何分支中。

例如, Junio C Hamano(Git 的维护者)在Never merging back博客文章中描述了此工作流程。

这大致是Jefromi写的

于 2009-10-06T22:01:10.747 回答