通常情况下,您只需将发布分支合并到开发分支中即可。
在典型的工作流程中,发布分支从开发分支分支出来。如您所描述的,新的开发提交被添加到开发分支,并且修补程序被添加到发布分支。在某一时刻,您将在发布分支中合并开发分支,即开发分支获得新的合并提交,并且在释放分支头部保持不变的情况下开发分支头部(主控)前进。
$ git checkout master
$ git merge -m "Merge in hotfix for 'blah blah blah' back into develop" release
开发分支现在将包含新的开发提交和修补程序,而发布分支仍然只包含修补程序。您可以继续向发布分支添加其他修补程序,并让开发将它们合并(并继续将开发工作提交给开发分支)。
的gitflow图片有这个可视化:
这种方法不会让你选择哪一个修补程序得到重新合并开发(除非你做一些专门排除某些提交)。请记住,当一个分支合并到另一个分支中时,第一个分支有效地从第一个分支尚未拥有的第二个分支(从第二个分支的合并点)开始提交所有提交,即它获取所有提交它从以前没有被开发出来的开发中解除了分支。如果您在发行版上创建了2个修补程序,并未将第一个修补程序合并,但是随后在第2个修补程序之后选择在发布分支的提示中进行开发合并,那么开发将获得两个修补程序。
-
,你可能不希望在开发分支唯一的修补程序的变化是一样颠簸的版本号的变化。您将需要在合并(或之后)期间修复该问题,否则请确保在发布分支中的单独提交中隔离这些更改,以便您可以“伪造”将该提交单独合并回开发分支,即,使开发分支认为它已经有了这种承诺,而没有实际纳入该承诺的“差异”。我大致描述这里的过程:
https://stackoverflow.com/a/19794987/11296
例如,如果你在发布分支一个bug修正,然后更新的文档版本#/在一个单独的代码提交(最后一次提交),然后合并到这样的开发分支:
$ git checkout release
$ <implement bugfix>
$ git add ...
$ git commit -m "bugfix for ..."
$ <change the version #>
$ git commit -m "bump version number to ..."
$ # Ready to pull this bugfix into development
$ git checkout master
$ # Merge in the bugfix changes (i.e. all but the last commit)
$ git merge -m "Merge in hotfix for 'blah blah blah' back into develop" release^
$ # "Fake" merge the version # change
$ git merge --strategy=ours -m "Fake merge version # change" release
感谢您的详细解答我认为我现在更清楚地了解该做什么。 – navanitachora