我使用的是变基主题分支工作流程http://www.golden-gryphon.com/software/misc/packaging.html
但是因为本地测试人员和管理员不喜欢一次性发布分支,所以我需要转移到具有稳定分支的工作流。
唯一可接受的是合并工作流程。现在的问题是我不知道如何使用此工作流中的相关功能分支。在变基础时,这很简单,每个补丁我只是重新设置依赖于这个分支的所有功能分支,一切都恢复正常。在合并工作流程中,我无法修改我的功能分支,但合并似乎有点疯狂。
有更好的方法吗?
答案 0 :(得分:5)
有几个长期功能,模型可能如下所示:
o-----o bugfix
/ \
o--o--o------o------o develop branch
\ \ \
o-o----o---o--o long-term feature 1
\ \ \ \
o--o-o-o-o--o--o feature 2
基本上,您有一个开发分支,并将错误修正合并到您的开发分支。长期功能分支是开发分支的基础,您可以通过合并该开发分支的新更改来更新它。
同样,你有一个基于特征1的reature 2的特征分支,你可以通过合并新的东西新特征1分支来更新它。
当功能1完成后,您将其合并回来开发,并从开发分支更新功能2:
o-----o bugfix
/ \
o--o--o------o------o---o---o develop branch w/ feature 1
\ \ \ / \
o-o----o---o--o \
\ \ \ \ \
o--o-o-o-o--o--o--o-o feature 2
答案 1 :(得分:2)
合并和rebase工作流之间的主要区别在于,合并在rebase工作流中是不可见的,但它们仍然会发生(您可以在rebase之后的reflog中看到它们)。然后使用rebase甚至更多,因为对于要重新分支的分支的每个新变更集都会执行自己的合并,而在简单合并工作流中,只完成两个分支头之间的一个合并。
典型的合并工作流程如下所示:
o-o-o--------------o Release1+bugfixes
/ \ \
o-----o----o--o-o--o---o----o-o-o-o-o--o develop
\ / \ /
o-o-o Feature 1 o---o Feature 2
短期功能是在开发中开发的,长期功能得到自己的分支。功能分支合并回到开发中。对于每个版本,都会从develop创建一个分支,并在发布错误的发布分支上创建错误修正。当一个错误修复完成后,它将合并回到develop。
可以在http://nvie.com/posts/a-successful-git-branching-model/找到更好的解释。