如何从LOG中删除'git commit',就像它从未存在过一样

时间:2012-01-17 20:48:35

标签: git

我在其中一个提交中犯了一个错误。现在我想完全删除这个提交,所以看起来它从来就不存在。我不想在日志中看到这一点。

我已尝试过this question ("How to delete a 'git commit'")的所有提示,但我可以在日志中看到提交。我怎么能完全删除它?

- 编辑 -

好的,我没有提供完整的信息。 Kevin Ballard 是正确的。

到现在为止,我没有推动此提交,它只在我的机器中。 ouah 回答工作,命令

git log

不会显示,但命令

git reset --hard HEAD^

do是“chekout last commit并将分支更改为this”,因此我继续使用SmartGit之类的图形程序看到该提交。

- 编辑2 -

不,这是一个SmartGit漏洞!!!!提交真的消失了。我必须关闭日志窗口,然后再打开。提交不再存在。

2 个答案:

答案 0 :(得分:11)

如果是最后一次提交

git reset --hard HEAD^

如果不是最后一次提交

git rebase -i commit_hash^

编辑器将打开,用提交删除整行,保存并退出。

请注意,如果分支已被推送,则重写历史记录或重新定位通常是一个坏主意,您可能更愿意使用

git revert commit_hash

将添加一个恢复提交commit_hash的新提交。

答案 1 :(得分:2)

此命令(注意,它会重写历史记录):

git rebase --onto commitHash^ commitHash

(@ ouah&#39的解决方案对我没有用,而凯文已经做了,但他的解决方案不应该是评论,应该是这样的答案。)