想象一下这个场景:
master: M
release-candidate: \ A--B'--C'
feature-A: \-A-/ / /
feature-B: \-B--/ /
feature-C: \--C---/
候选版本是使用以下命令创建的:
git co master
git co -b release-candidate
git merge feature-A (FAST FORWARD)
git merge feature-B (REGULAR MERGE)
git merge feature-C (REGULAR MERGE)
假设在我们的预发布测试期间,我们发现了功能 A 的问题。我们如何撤消将此功能分支快速 merge 到发布候选分支所引入的更改?
我们可能会将候选版本重置回其主状态并再次开始 merge 所有有效功能,但这将意味着重复大量的 merge 冲突解决并引入错误的可能性。
另请注意,我只在每个功能分支上展示了一个提交,但解决方案应该适用于有多个提交要撤消的情况。
最佳答案
因为你不想重写已发布的历史,git revert
是你的 friend 。
在这种情况下:
git revert M..A -n
git commit -m "revert feature-A"
如果你想在一次提交中恢复,或者
git revert M..A
如果您想以相反的顺序对每个原始提交进行一次还原提交。
关于git - 如何在不使用 reset 的情况下撤消 git 中的快进 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37118397/