想象一下这种情况:
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相关的问题。那么,我们如何撤消将此特性分支快进合并到发布候选分支所引入的更改?
我们可以尝试将发布候选分支重置回其主状态,然后重新开始合并所有有效的特性,但这意味着需要重复很多合并冲突解决,并且可能会引入错误。
还要注意,我仅展示了每个特性分支上的单个提交,但解决方案应适用于需要撤消多个提交的情况。
git revert --continue
。如果这个选项和-n
不兼容,使用第二种选择,在所有内容都被还原后使用git rebase -i
来压缩提交(如果需要的话)。 - Vampire