我正在考虑为每个开发人员使用git分支设置一个门控提交工作流,如下所示:
这是一个合理的解决方案吗?我来自颠覆,对git没有多少经验。
答案 0 :(得分:3)
我认为appraoch通常是合理的。我会尽量不把分支机构视为远程'。这是颠覆变化的一部分。所有开发人员都有本地和远程(临时)区域(' origin'),用于与实际的远程存储库同步。开发人员应经常与主分支一起提交,拉动,推送和重新定位(保持最新)。
有关工作流程的更多信息:git branch, fork, fetch, merge, rebase and clone, what are the differences?
我的工作流程是:
答案 1 :(得分:1)
根据我的个人经验,过去对我的团队最有效的工作流程是让所有开发人员共享一个远程分支。对于我的团队,我们恰好称这个分支为“主人”。我们的分支策略借鉴了本文中的想法:a-successful-git-branching-model。只需将文章中的“develop / master”分支与“master / release”交换,你就可以完成我的设置了。它是相同的,只是标记不同。
我基本上让我们所有的开发人员都承诺掌握,但只增加了提交合并的约定。所有直接编码都发生在主题分支上。对于只有一个变更集的快速修复,允许直接提交给master。但总的来说,强烈鼓励使用本地主题分支。
此外,必须立即推送所有提交给master的提交,否则差异会累积并使合并更难。通过这种方式,解决合并的负担是开发人员的责任,而不是团队领导或某些自动化软件。这是理想的情况,因为开发代码的人通常最了解自己的变化。
如果不止一个开发人员需要在单个主题分支上工作,我允许所有开发人员在特定路径下将自己的分支推送到远程(在我的情况下,它是“共享/”),以便其他人可以拉动和推送从它。
对于测试服务器(CI服务器),它会在每次测试运行时更新主服务器和分支机构。在一个新的分支上进行测试并不是绝对必要的,但是我知道某些自动脚本不能直接在master上工作,我会更加自如。
如果你来自svn,在共享分支上发生不断的微小变化可能看起来有点可怕。不要害怕,git通常非常善于解决冲突,而git merge
或git pull
甚至不会引发冲突。
最后,请确保经常向开发人员灌输承诺的习惯,经常拉。小增量更改实际上有助于更好地合并代码。
答案 2 :(得分:0)
使用Gerrit - 它基本上是一个内置代码审查功能的门控提交解决方案。