典型使用场景:
我有主分支,foo分支和bar分支。它们都是最新的状态。现在,我执行"git checkout master"并修复了一个bug。
假设此修复在一个已跟踪的文件上进行,在所有分支上其状态相同 - 也就是说,在修复之前,从每个分支对该文件进行差异比较不会出现差异。
是否有一种方法可以将此修复提交到所有分支中?
典型使用场景:
我有主分支,foo分支和bar分支。它们都是最新的状态。现在,我执行"git checkout master"并修复了一个bug。
假设此修复在一个已跟踪的文件上进行,在所有分支上其状态相同 - 也就是说,在修复之前,从每个分支对该文件进行差异比较不会出现差异。
是否有一种方法可以将此修复提交到所有分支中?
man gitworkflows
的内容如下:
始终将修复提交到需要它们的最旧支持分支。然后(定期)将集成分支向上合并到彼此之间。
这样可以获得非常受控制的修复流程。如果您发现已经将修复应用于例如主分支,而在维护中也需要它,则需要使用git-cherry-pick(1)向下精选它。这会发生几次,并且除非您非常频繁地这样做,否则不必担心。
当然,首选第一种方法-仅在存储库中有一次提交,并且能够查看其进入每个分支的历史记录。但生活并不完美,有时您会发现自己处于第二种情况。如果这种情况变得足够普遍,您可以编写一个脚本,如下所示:multi-cherry-pick <commit> <branch> [<branch>...]
该命令将逐个检查每个分支并挑选给定的提交。
我认为你需要的是 git cherry-pick
。
在将修复提交到第一个分支后,您可以使用 git cherry-pick
将其合并到其他每个分支中。
这个相关的stackoverflow问题可能会有所帮助: Git & Working on multiple branches