我们有两个存储库的设置,dev存储库和deploy存储库(无法更改),并采用仅变基合并策略。最初 dev 仓库看起来像这样:
main: A -> B -> C -> D
|______| |______|
release: Sq1 -> Sq2
因此
main
将具有完整的线性历史记录,并且 release
包含压缩的提交并将重新基于 deploy 存储库的 main
。 release
还可能有 deploy 的提交,这些提交将从部署重新基于基础,但不会重新基于 main:
在某些时候,挤压被移除,只进行了变基:
main: A -> B -> C -> D -> E -> F
|______| |______|
release: Sq1 -> Sq2 -> E* -> F*
所以目前的情况:
[dev]
main: only dev commits
release: old squashed commits, new commits from main + some external commits not in main
[deploy]
main: almost like release in dev, but can contain some more external commits
现在,问题是这样的:每次我们将
main
重新设置为 release
时,我们都需要手动跳过所有已合并但带有挤压的旧 main
提交。我们不想那样做。
我的想法是将它们全部重新设置为
release
,但删除所有更改 - 这样将来的 git 将看到这些提交已合并并自动跳过它们,只在重新设置中留下新的提交。但我不知道该怎么做。另外,如果有更好的方法来解决这个问题,我很高兴听到!
我的想法是将它们全部变基为
,但删除所有更改 - 这样将来的 git 就会看到这些提交已合并并自动跳过它们,只在变基中留下新的提交。release
我怀疑这是否有效:如果检测到相同的内容,则在变基期间会跳过提交,如此处所示。
现在,问题是这样的:每次我们将
变基为main
。release
这就是问题所在:永久分支(如主分支或发行版)不应该重新建立在任何地方。
可以合并到(从功能/开发分支到它们)。
您可以考虑将
main
合并到 release
,以记录给定的版本。
但是不应对这些分支进行变基。当您计划发出拉取请求时,您可以在主干之上重新建立功能/开发分支。