一尘不染

从 Git 的分支中删除提交

javascript

我想知道如何删除提交。

通过delete,我的意思是,如果我没有做那个承诺,当我将来做一推,我所做的更改不会推到远程分支。

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


阅读 221

收藏
2022-01-12

共1个答案

一尘不染

小心: git reset --hard 将删除您的工作目录更改。在运行此命令之前,请务必存储您想要保留的任何本地更改。

假设你正坐在那个提交上,那么这个命令会搞砸它......

git reset --hard HEAD~1

该HEAD~1方法的头前提交。

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

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

如果你已经推了它,你需要用力推才能摆脱它......

git push origin HEAD --force

但是,如果其他人可能已经取消了它,那么你最好开始一个新的分支。因为当他们拉动时,它只会将其合并到他们的工作中,而您会再次将其推回原处。

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

仅供参考 -git reset --hard HEAD如果您想摆脱正在进行的工作,那就太好了。它会将您重置回最近的提交,并删除工作树和索引中的所有更改。

最后,如果您需要找到您“删除”的提交,它通常存在,git reflog除非您对存储库进行了垃圾收集。

2022-01-12