我正在尝试以简单的方式执行此操作并减少编码。我在git中有以下提交
A->B->C->D
我想基本上删除提交C并继续提交D - 我正在努力找到一种方式
我试过
git checkout -b myfix B
git cherry-pick D
git checkout master
git merge myfix
但是当然,自从我合并后,提交C仍然存在。
有没有办法说用myfix分支替换master?
甚至是另一种获取方法
A->B->D->[new commit]
答案 0 :(得分:3)
Interactive Rebase
$ git rebase -i HEAD~5
其中-i是交互式标志,HEAD~5表示包含交互式rebase中的最后5次提交。
然后会显示一个提示,删除引用您想要删除的提交的行,保存并关闭。
同时强>
如果您只想返回本地评论,请使用git revert
答案 1 :(得分:1)
git revert
是一个非常简单的工具,可以完全达到你想要的效果。 This writeup is a nice explanation on how it works and how to use it,但这仅仅是使用问题:
git revert <commit>
<commit>
是提交ID,或者仅在您的情况下HEAD~1
。结果命令是:
git revert HEAD~1
然后只需git push
您的更改就可以了。