开发分支时管理修补程序与master有很大不同?

时间:2011-08-24 13:02:53

标签: git git-flow

我正在使用“Git Flow”分支模型,主分支和开发分支。我正在开发一个主要的新版本,所以我的开发分支与我的主分支完全不同。每当我需要在主分支上创建一个修补程序并将其合并回develop时,这就会产生问题。几乎总是存在冲突,它正在成为一种真正的痛苦。

管理此问题的最佳方法是什么?我可以更容易地手动开发小​​修补程序,然后在我准备好时将所有内容合并到master中,而不将master重新合并到develop中。这可能吗?

4 个答案:

答案 0 :(得分:50)

从一个分支到另一个分支的某些提交的最简单方法是cherry-picking

假设master中的修补程序具有提交哈希HASH,并且您希望将该修补程序带入devel分支,请执行git checkout devel后跟{{ 1}}。就是这样。

如果您想将所有更改从git cherry-pick HASH转移到master,您可以通过

实现这一目标
devel

如果你有相反的情况(你在git checkout devel git rebase master 分支的开发过程中制作了一个修补程序,并希望在devel完全合并到master之前将该修补程序带入devel }),工作流程非常相似。假设此修补程序具有散列master,请执行以下操作:

HOTFIX_HASH

现在,提交存在于git checkout master git cherry-pick HOTFIX_HASH master中。要解决此问题,请键入

devel

并且提交将从git checkout devel git rebase master 中消失,因为它已经存在于devel中。

答案 1 :(得分:11)

我遇到这种情况的一般工作流程是创建bug-fix master分支来修复问题。准备就绪后,将其合并回master,然后将master合并到develop

这假设您的错误修复几乎是两个分支中需要更改的代码之间的一对一。如果是这种情况,您可以随时在git merge -s ours master中尝试develop(请参阅man-page),以便develop分支优先。

我使用类似的过程来管理我正在开发的开源项目上的错误修复版本。 master始终领先于需要应用错误修复的位置,因此我从需要修复的标记创建分支,应用修复和发布,然后重新标记并将新标记合并到master 。由于版本号,这会导致冲突,但可以使用上面的命令避免冲突。

希望有所帮助。

答案 2 :(得分:6)

我通常遵循这个guide,这在大多数情况下非常适合,并避免出现冲突和更改问题的市长。

如果您可以在feature分支上工作,并且仅在创建development分支之前将其合并到release中(意味着您实际上正准备发布)...此方法应该避免您遇到的大多数合并冲突。

由于在feature-breaking分支上发生了重大更改,因此在feature-breaking分支合并到开发中时,您可能只会遇到一次冲突。您也可以随时将development合并到release分支中以保持更新。

根据development所有hotfix-branch你所拥有的最小或非冲突,你也会很酷。

我之前在链接上分享的指南非常强调从不从development合并到master或向后合并。始终通过release分支处理您的版本。

答案 3 :(得分:0)

这一切都取决于您将如何使用GIT来管理代码,发布计划和版本。最佳做法是让title: new GestureDetector( child: new IgnorePointer ( child: new TextField( controller: searchController, decoration: new InputDecoration( hintText: 'Buscar parcela', border: InputBorder.none), ))), onTap: () { Navigator.push( context, new MaterialPageRoute( builder: (context) => new EstatesPage( parcela: widget.parcela, dropdownItem: dropdownSelection))); }, 分支保存您的生产级别代码,让master分支进行开发,让develop分支从release分支来处理您的即将到来的工作发行版和develop分支从hotfix分支出来,以处理生产代码的紧急修复程序。因此,masterrelease分支最终将被合并回到hotfixmaster两者中,以确保两个分支都具有更改,以及稍后develop分支出新的develop,此新发行版在合并到release上没有问题。并且标记将始终位于master上。

使用这种方法,masterrelease分支将被合并两次,并且在合并到hotfix时有时会看到冲突,如果正在进行许多开发活动,这是不可避免的develop。缩短developrelease分支生命周期可能是减轻此问题的一种方法。如果发生冲突,请使用任何技术解决它,并确保不要更改完成并经过测试的hotfixrelease代码。