我有以下提交顺序:
A---B---D---E---G---H---
\ / \
C---/ F---
提交 D 引入了不正确的更改, merge 提交 E 将其转发给 F 和 G。 我想完全删除 D 和 E 提交。 可以做什么:
A---B---C---G---H---
\
F---
最佳答案
你在这里修改历史。如果该历史记录不存在于任何其他存储库中,那很好,否则请确保您知道自己在做什么。
在 C
使用 HEAD
检查名为 my_better_history
的分支
git checkout -b my_better_history C
引入你想要的提交: git cherry-pick GH
检查你的工作。如果您的原始分支名为 master
,您可以执行 git diff-tool master
以确保状态相同。如果一切顺利,您可以将您的新历史作为正式历史。假设您从分支 master
开始,那么您可以:
git checkout master
git reset --hard C #now your master is back to the common history point.
git merge my_better_history
现在 master 将拥有所需的历史记录。
关于git - 如何删除不需要的提交和 merge ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38143472/