[英]Git branching model problems
我正在实施Vincent成功的git合并模型( http://nvie.com/posts/a-successful-git-branching-model/ )。 所以我在我们的主要服务器上有一个主存储库“main”,有两个主要分支:master和develop。 我的团队的每个开发人员都应该将其分成个人存储库并在本地创建这个个人存储库的克隆。 他们应该为他们的个人工作,然后创建一个拉/合并请求。
场景:我需要开发一个新的酷功能。
这些是我的问题:
希望很清楚,Tnx提前。
首先要小心那个“成功的git分支模型”。 - 它可能非常适合您的项目,也可能完全错误。 - 这总是取决于具体情况。
有什么理由,为什么你需要为每个开发人员提供一个单独的存储库? - 每个开发人员都必须克隆主存储库以处理文件,因此每个开发人员都已将个人存储库作为工作副本。
为什么不只有一个中央存储库和每个功能的分支? 如果您需要,您可以限制谁能够推动哪个分支。
第3步仅更新远程引用。 它不会同步到你的地方分支机构。 所以在第4步中,运行git checkout -b feature/cool_feature develop
,你实际上是从你过时的本地分支创建分支,除非你正在做其他事情以使其更新。
像往常一样,这取决于。 从主线合并可以引入“无用的提交”(如Linus所称),并且可能会混乱历史。 重新定位通常是更好的选择,特别是如果分支真的是你的私人分支。 如果必须与其他人共享该分支以供他们构建,那么您将进入一些有趣且危险的领域,并且变换成为更好的解决方案。
更具体地说,如果在开发周期中,在上游引入了新的变化,我会在闲暇时将它们重新加入我的分支中。 我可能要等到我的功能完全实现,如果实现时间不长,或者我可以立即执行,特别是如果在我正在工作的区域附近进行了更改。
如果您使用rebase,那么main
已经合并。 如果你不进行rebase,我倾向于避免额外的合并,除非我认为它会导致问题,并且有测试运行和最终的集成结果。
你会把它推到分支,而不是合并到develop
。
将分支合并到main
存储库后,您可以自由删除分支。
请注意@michas的建议。 根据您的具体情况,NVIE的型号可能不适合您。
此外,您可能没有想到这一点,但您如何在本地保持最新develop
? 它跟踪哪个分支: origin/develop
或main/develop
? 我要求揭露一些问题。 首先,您需要以某种方式使本地开发分支保持最新状态。 如果它是跟踪origin/develop
那么你需要做一些像git merge --ff-only main/develop
来git新提交到你的分支上。 或者,你可以让你的本地develop
分支跟踪main
代替: git branch --set-upstream develop main/develop
。 这意味着你的个人回购将有一个过时的develop
分支,但它不会造成任何伤害。
FWIW,因为本地分支没有使用git fetch
更新,而git pull
可能会引入无用的提交,我一直在使用一个名为git-ffwd
的脚本来保持我的分支机构是最新的。 它执行获取,并且只要分支不发散就更新本地跟踪分支。
最后,如果您遵循@michas建议并且只能在中央存储库中工作,那么围绕遥控器和保持最新状态的一些问题。 这就是我们在工作场所实施的,而且效果很好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.