如何删除';git提交';从日志中,就像它从未存在过一样

如何删除';git提交';从日志中,就像它从未存在过一样,git,Git,我犯了一个错误。现在我想完全删除这个提交,所以它看起来好像从未存在过。我不想在日志中看到这个 我尝试了来自的所有提示,但我可以在日志中看到提交。我怎样才能完全删除它 --编辑-- 好的,我没有给出完整的信息。凯文·巴拉德是对的 到现在为止,我没有推动这个提交,它只是在我的机器。“啊”的回答是有效的,命令是有效的 git log 不会显示,但命令是什么 git reset --hard HEAD^ do是“chekout last commit,并将分支更改为this”,因此我继续使用类似的图

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

我尝试了来自的所有提示,但我可以在日志中看到提交。我怎样才能完全删除它

--编辑--

好的,我没有给出完整的信息。凯文·巴拉德是对的

到现在为止,我没有推动这个提交,它只是在我的机器。“啊”的回答是有效的,命令是有效的

git log
不会显示,但命令是什么

git reset --hard HEAD^
do是“chekout last commit,并将分支更改为this”,因此我继续使用类似的图形程序查看提交

--编辑2--


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

如果是最后一次提交

git reset --hard HEAD^
git rebase -i commit_hash^
如果不是最后一次提交

git reset --hard HEAD^
git rebase -i commit_hash^
编辑器将打开、删除整行,并执行提交、保存和退出操作

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

git revert commit_hash
这将添加一个新的commit,该commit将还原commit
commit\u hash

此命令(注意,它将重写历史):


(@ouah的解决方案对我不起作用,相反,莉莉的解决方案起作用,但他的解决方案不应该是评论,应该是这样的回答。)

我可能错了,但我认为你不能。@zneak:你可以,但罗德里戈需要提供更多信息。这个提交被推到任何地方了吗?您是否关心从磁盘上删除有关此提交及其文件的所有信息,或者只需确保它不会显示在
git log
(并且可以在以后的某个时间点自然地进行垃圾收集)就可以了?如果您试图删除单个提交,请尝试下面的提示,您也可以只使用
git-rebase--on$SHA1^$SHA1
(其中
$SHA1
是要删除的提交)。此外,还有一个警告,即它不会复制合并。您可以给它设置
-p
标志来尝试和再现合并,但如果您删除的提交对任何合并解决方案都有影响,则它可能无法正常工作。还要注意,将
-p
-i
混合使用是一个坏主意(请参阅git rebase手册中的BUGS部分)。@ouah您可能应该提到,如果分支已被推送,那么这是一个坏主意。git revert。是最好的解决方案=),如果您想将其应用于远程分支,那么在执行“git reset HEAD^--hard”之后再执行“git push-f”