问题

我想知道如何删除提交.

通过delete,我的意思是它似乎没有提交,当我在未来进行推送时,我的更改将不会推送到远程分支.

我读了git help,我认为我应该使用的命令是git reset --hard HEAD.这是正确的吗?

  最佳答案

小心:git reset --hard WILL DELETE YOUR Writure Directories Chagiones.一定要在运行此命令之前保留任何本地更改.

假设你坐在那个提交上,那么这个命令就会打破它...

 git reset --hard HEAD~1
 

HEAD~1是指头部之前的提交.

或者,您可以查看git log的输出,找到您想要备份的提交的提交ID,然后执行此操作:

 git reset --hard <sha1-commit-id>
 

如果你已经推了它,你将需要做一个力推来摆脱它...

 git push origin HEAD --force
 

然而,如果其他人可能已经把它拉下来了,那么最好是开始一个新的分支。

如果您已经推动,最好使用 git revert 创建一个“镜像图像”提交来消除更改。但是,两个提交都将在日志中。


如果你想摆脱PROGRESS的工作,git reset --hard HEAD很棒.它将重置回最新的提交,并删除工作树和索引中的所有更改.


最后,如果您需要找到一个“删除”的提交,除非您有收集存储库的垃圾,否则它通常存在于 git reflog 中。

  相同标签的其他问题

gitgit-rebasegit-reset