阅读答案:
Git - 从历史记录中删除提交
我只看到涉及交互式编辑 TODO 文件的建议。有没有办法在给定哈希值的情况下删除单个提交,并保留(“选择”)所有后续提交,而无需用户交互?
基本解决方案:
由于@phd的评论而提出的解决方案,最初在here中找到:
要删除哈希值为
SHA
git rebase --onto SHA^ SHA
但请记住,变基和合并具有复杂的交互作用,如果您的历史涉及合并,您应该阅读。
上面的樱桃:
您可以通过
~/.gitconfig
[alias] drop = !git rebase --onto $1^ $1 && :
用它你可以简单地写:
git drop SHA
与 @einpoklum 的 git 别名 略有不同。 我喜欢这个别名,它按原样工作,但是
&& :
对于任何处理位置参数的 git 别名,将其编写为函数可能更安全,在这种情况下:
[alias] drop-commit = "!f() { git rebase --onto ${1}^ ${1}; }; f"