从历史记录中删除过去的 git 提交 - 非交互方式

问题描述 投票:0回答:2

阅读答案:

Git - 从历史记录中删除提交

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

git automation git-rebase
2个回答
1
投票

基本解决方案:

由于@phd的评论而提出的解决方案,最初在here中找到:

要删除哈希值为

SHA
的提交,请写入:

git rebase --onto SHA^ SHA

但请记住,变基和合并具有复杂的交互作用,如果您的历史涉及合并,您应该阅读

上面的樱桃:

您可以通过

~/.gitconfig
:

为这个习惯用法创建一个别名
[alias]
    drop = !git rebase --onto $1^ $1 && :

用它你可以简单地写:

git drop SHA

0
投票

@einpoklum 的 git 别名 略有不同。 我喜欢这个别名,它按原样工作,但是

&& :
让我有点白费力气

对于任何处理位置参数的 git 别名,将其编写为函数可能更安全,在这种情况下:

[alias]
  drop-commit = "!f() { git rebase --onto ${1}^ ${1}; }; f"
© www.soinside.com 2019 - 2024. All rights reserved.