【发布时间】:2022-07-08 00:42:25
【问题描述】:
我已经使用git merge --no-ff通过拉取请求创建合并提交合并了许多功能分支进行开发,现在我已经开始测试该版本。
在测试期间,企业决定删除其中一项功能。
例如,在这个图表(不是我的)中,我会尝试从历史记录中删除棕色分支“合并拉取请求 #8661..”。
您可以看到这不是一个简单的线性案例,因为从分支的第一次提交到合并点存在重叠的提交和合并。
使用git revert 并进行新的提交并没有真正起作用,因为它会将功能提交留在历史中,这使得由于git revert 的警告而很难在下一个版本中将它们返回
还原合并提交声明您将永远不希望合并带来的树更改。 因此,以后的合并只会带来提交引入的树更改,这些提交不是先前恢复的合并的祖先。 这可能是也可能不是您想要的。
所以我想要实现的是“撤消”而不是“恢复”。
交互式 rebase 似乎 可能 是要走的路,但我需要能够识别构成该功能分支的所有提交哈希,这在大回购。
我需要确保其他合并提交保持不变并且历史记录没有被展平 (--preserve-merges?)
有什么好的方法来解决这个问题?
注意:我不担心我正在重写历史或哈希正在更改,因为它会很好地传达给团队并且我可以解决冲突。
【问题讨论】:
标签: git