首页 > 解决方案 > 从历史记录中删除过去的 git 提交 - 非交互方式

问题描述

阅读以下问题的答案:

Git - 从历史中删除提交

我只看到涉及交互式编辑 TODO 文件的建议。有没有办法在给定哈希的情况下删除单个提交,并保留(“选择”)所有后续提交,而无需用户交互?

标签: gitautomationgit-rebase

解决方案


基本解决方案:

由于@phd 的评论而得到的解决方案,最初在这里找到:

要删除带有哈希值的提交SHA,请编写:

git rebase --onto SHA^ SHA

但是请记住,变基和合并具有复杂的交互,如果您的历史涉及合并,您应该阅读这些内容。

樱桃在上面:

您可以通过以下方式为此习语创建别名~/.gitconfig

[alias]
    drop = !git rebase --onto $1^ $1 && :

你可以用它简单地写:

git drop SHA

推荐阅读