2009-10-06 82 views
5

典型使用方案:提交Git中多个分支的更改

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

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

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

回答

5

我希望git cherry-pick是你想要的。

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

上SO此相关的问题可能会感兴趣的: Git & Working on multiple branches

+0

是的,我想过混帐摘樱桃。只是想知道是否有更快的方法。 – Carl 2009-10-06 19:37:13

+0

谢谢:)相关的问题正是我所需要的。 – Carl 2009-10-06 19:46:01

9

这种常见的方法是“合并向上”。从man gitworkflows

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

这给出了一个非常可控的修复流程。如果您发现您已经对例如master也是必需的,你需要向下挑选它(使用git-cherry-pick(1))。这会发生几次,没有什么可担心的,除非你经常这样做。

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

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

,检查出每个分支轮流和樱桃挑选指定的提交。

5

是的,有。在单独主题(功能)分支(分支出最早分支/最早状态)上进行此提交,然后将此主题分支合并到所需的任何分支中。

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

这大致就是Jefromi wrote写道

+0

谢谢。是的,我最终使用了主题分支。 Tim对我提出的问题的接受答案也是由你写的,正是我需要的:) – Carl 2009-10-07 02:28:12