典型使用场景:
我有 master、branch_foo 和 branch_bar。所有都是最新的。现在,我做了一个“git checkout master”并修复错误。
可以说修复是在所有分支上处于相同状态的跟踪文件上 - 即。在修复之前,每个分支的文件差异不会导致任何差异。
有没有办法将此修复提交到所有分支?
典型使用场景:
我有 master、branch_foo 和 branch_bar。所有都是最新的。现在,我做了一个“git checkout master”并修复错误。
可以说修复是在所有分支上处于相同状态的跟踪文件上 - 即。在修复之前,每个分支的文件差异不会导致任何差异。
有没有办法将此修复提交到所有分支?
常见的做法是“向上合并”。来自man gitworkflows
:
始终将您的修复提交到需要它们的最旧的受支持分支。然后(定期)将集成分支向上合并。
这提供了一个非常受控的修复流程。如果你注意到你已经对 maint 中也需要的 master 应用了一个修复,你需要向下选择它(使用 git-cherry-pick(1))。这会发生几次,除非您经常这样做,否则无需担心。
第一种方法当然是首选——最好在你的 repo 中只提交一次,并且能够查看它是如何进入每个分支的历史记录。然而,生活并不完美,你有时会发现自己属于第二类。如果这种情况变得足够普遍,您也许可以编写一个脚本,例如
multi-cherry-pick <commit> <branch> [<branch>...]
它依次检查每个分支并挑选给定的提交。
我期待git cherry-pick
的是你想要的。
将修复提交到第一个分支后,您可以使用git cherry-pick
将其合并到其他每个分支中。
这个关于 SO 的相关问题可能很有趣: Git & Working on multiple branches
就在这里。在单独的主题(功能)分支上进行此提交(分支最旧的分支/最早的状态),然后将此主题分支合并到您想要的任何分支中。
例如, Junio C Hamano(Git 的维护者)在Never merging back博客文章中描述了此工作流程。
这大致是Jefromi写的