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