如何使用 GitFlow 模型处理两个主要版本
How to work on two major versions using the GitFlow model
我们使用 GitFlow 模型和 feature/release/hotfix 分支已经有一段时间了。现在我们将要介绍一项可能需要数周时间开发的主要功能,并将导致主要版本升级,我们希望保留我们当前的主要功能工作流程(因此不使用每个人都直接提交的单个分支)作为以及当前版本。
我想知道最好的方法是什么。会不会是fork整个repo然后合并回原来的?我们怎样才能让两个主要版本都处于活跃的开发状态,从而同时拥有 1.x 和 2.x gitflow 工作流?
作为旁注,远程存储库托管在 github 上,因此将整个存储库分叉到某个用户而不是某个组下,似乎有点违反直觉。
一般性评论只是为了向不熟悉 git 流程的用户澄清,
git flow 是开源的,因此您可以修改流程并根据需要对其进行自定义
根据之前的评论,您有多种选择可以从这里开始:
正如您所建议的 github fork 是一个很好的解决方案。 git 流程有 support
个分支用于此案例,但目前它们被标记为实验性功能。
例如,github fork 将允许您使用 web-hooks merge/export 从当前开发分支更改为并行分支。
修改 git 流程以根据您在问题 ("thus not using a single branch where everybody commits directly") 中的要求添加辅助流程,并且在提交这些更改时您可以决定如何处理它,根据新的 gitflow 分支类型将其合并到何处。
您需要牢记并意识到,如果您要进行“主要版本升级,您将必须"fix" 途中冲突多多
总结一下:
您可以选择使用 git 流程,但是您必须确保经常拉动以避免以后发生巨大冲突,方法是在它们发生时立即修复它们
或
您可以修改 git 流程并通过创建 2 个开发分支(一个用于日常开发,第二个用于新产品开发线)来根据您的需要对其进行自定义。所有提交到原始开发分支的更改也应该提交到新的开发分支,反之亦然。
我也为这种情况寻找答案,过了一段时间我找到了一个令人愉快的方法。
正如@CodeWizard 提到的:
by creating 2 develop branches one for day to day development and second one for your new product development line. All the changes committed to the original dev branch should also be committed to the new dev branch as well but not vice versa.
一种方法是让您的长期分支表现得像一个新的功能分支,例如 feature/next-major-version
。
当你想要下一个主要版本的新功能时,你只需创建一个新的功能分支。唯一的变化是它现在应该从 feature/next-major-version
分支出来,而不是像往常一样从 develop
分支出来。
要合并回子功能,只需将功能分支推送到 GitHub 并从您的子功能创建一个拉取请求到 feature/next-major-version
。如果适合您的需要,其他人可以查看您的代码。尽管如此,在 GitHub 拉取请求中,您可以从任何分支合并到任何其他分支。
在我们的组织中,我们使用 git-flow through Atlassian 令人惊叹的 SourceTree 程序。从那里可以像这样分支。挑战在于,到今天为止,SourceTree 似乎不支持将一个特性合并到另一个特性中,只能从一个特性合并到 develop
。在工作流程中添加 GitHub 拉取请求解决了这个问题。
我们使用 GitFlow 模型和 feature/release/hotfix 分支已经有一段时间了。现在我们将要介绍一项可能需要数周时间开发的主要功能,并将导致主要版本升级,我们希望保留我们当前的主要功能工作流程(因此不使用每个人都直接提交的单个分支)作为以及当前版本。
我想知道最好的方法是什么。会不会是fork整个repo然后合并回原来的?我们怎样才能让两个主要版本都处于活跃的开发状态,从而同时拥有 1.x 和 2.x gitflow 工作流?
作为旁注,远程存储库托管在 github 上,因此将整个存储库分叉到某个用户而不是某个组下,似乎有点违反直觉。
一般性评论只是为了向不熟悉 git 流程的用户澄清, git flow 是开源的,因此您可以修改流程并根据需要对其进行自定义
根据之前的评论,您有多种选择可以从这里开始:
正如您所建议的 github fork 是一个很好的解决方案。 git 流程有
support
个分支用于此案例,但目前它们被标记为实验性功能。
例如,github fork 将允许您使用 web-hooks merge/export 从当前开发分支更改为并行分支。修改 git 流程以根据您在问题 ("thus not using a single branch where everybody commits directly") 中的要求添加辅助流程,并且在提交这些更改时您可以决定如何处理它,根据新的 gitflow 分支类型将其合并到何处。
您需要牢记并意识到,如果您要进行“主要版本升级,您将必须"fix" 途中冲突多多
总结一下:
您可以选择使用 git 流程,但是您必须确保经常拉动以避免以后发生巨大冲突,方法是在它们发生时立即修复它们
或
您可以修改 git 流程并通过创建 2 个开发分支(一个用于日常开发,第二个用于新产品开发线)来根据您的需要对其进行自定义。所有提交到原始开发分支的更改也应该提交到新的开发分支,反之亦然。
我也为这种情况寻找答案,过了一段时间我找到了一个令人愉快的方法。
正如@CodeWizard 提到的:
by creating 2 develop branches one for day to day development and second one for your new product development line. All the changes committed to the original dev branch should also be committed to the new dev branch as well but not vice versa.
一种方法是让您的长期分支表现得像一个新的功能分支,例如 feature/next-major-version
。
当你想要下一个主要版本的新功能时,你只需创建一个新的功能分支。唯一的变化是它现在应该从 feature/next-major-version
分支出来,而不是像往常一样从 develop
分支出来。
要合并回子功能,只需将功能分支推送到 GitHub 并从您的子功能创建一个拉取请求到 feature/next-major-version
。如果适合您的需要,其他人可以查看您的代码。尽管如此,在 GitHub 拉取请求中,您可以从任何分支合并到任何其他分支。
在我们的组织中,我们使用 git-flow through Atlassian 令人惊叹的 SourceTree 程序。从那里可以像这样分支。挑战在于,到今天为止,SourceTree 似乎不支持将一个特性合并到另一个特性中,只能从一个特性合并到 develop
。在工作流程中添加 GitHub 拉取请求解决了这个问题。