如何将旧提交(在目标中压缩)变基为空?

问题描述 投票:0回答:1

我们有两个存储库的设置,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 git-rebase git-squash
1个回答
0
投票

我的想法是将它们全部变基为

release
,但删除所有更改 - 这样将来的 git 就会看到这些提交已合并并自动跳过它们,只在变基中留下新的提交。

我怀疑这是否有效:如果检测到相同的内容,则在变基期间会跳过提交,如此处所示

现在,问题是这样的:每次我们将

main
变基为
release

这就是问题所在:永久分支(如主分支或发行版)不应该重新建立在任何地方。
可以合并(从功能/开发分支到它们)。
您可以考虑将

main
合并到
release
,以记录给定的版本。

但是不应对这些分支进行变基。当您计划发出拉取请求时,您可以在主干之上重新建立功能/开发分支。

© www.soinside.com 2019 - 2024. All rights reserved.