在工作中,我们在功能分支模型的基础上开发,所有集成最终都在master
分支中。我们从master
和合并分支到master
。这导致了一个非常复杂的历史图表,我们正在寻找简化开发工作流程的方法。
这样做的一种方法是 rebase 而不是合并。但是,我们安装了一个内部GitLab实例,其中禁用了覆盖权限(并且它们不会仅为我们的项目启用)。因此 rebase 是不可能的。
老实说,我没有看到任何解决方法。但我不是Git专家,我可能会遗漏一些东西。
有什么建议吗?
答案 0 :(得分:2)
编辑 - 我的第一个答案绝不是最好的方法,尽管它会起作用。我把它留在了下面,以防任何人感兴趣。更好的答案如下:
您可以使用git cherry-pick一系列提交将featurebranch
次提交一次应用到master
。任何提交范围规范都可以,但在您的情况下,最简单的可能是(检出主控):
git cherry-pick featurebranch ^master
这意味着'樱桃 - 选择不在主人身上的featurebranch上的所有东西'。
旧的,糟糕的解决方案
您可以使用git format-patch和git am。
在分支featurebranch
上,运行git format-patch master
将为featurebranch
上的master
上的每个提交生成一个补丁文件。然后,您可以切换到master
并使用git am
应用修补程序。
(在没有与任何人分享featurebranch
的更直接的情况下,您可以改为master
反对featurebranch
而不是featurebranch
。 {1}},master
将featurebranch
的副本设置为最高权限,然后针对master
重新master
,这将使git快进featurebranch
{1}}。)