协慌网

登录 贡献 社区

删除尚未推送的 git commit

我进行了git commit但尚未将其推送到存储库。因此,当我执行git status ,我得到 '#您的分支比'master' 提前 1 次提交。

因此,如果我想回滚我的最高提交,我可以这样做:

git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316

鉴于当我做git log我得到:

commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
Date:   Tue Sep 29 11:21:41 2009 -0700


commit db0c078d5286b837532ff5e276dcf91885df2296
Date:   Tue Sep 22 10:31:37 2009 -0700

答案

实际上,当您使用git reset ,应该引用您要重置的提交;因此,您可能需要db0c078提交。

一个更简单的版本是git reset --hard HEAD^ ,以重置为当前磁头之前的前一个提交;这样,您就不必在提交 ID 周围进行复制。

当您执行任何git reset --hard时要当心,因为您可能会丢失所有尚未提交的更改。您可能要检查git status ,以确保您的工作副本是干净的,或者您确实想删除那里的所有更改。

另外,您可以使用origin/master代替 HEAD,就像 @bdonlan 在注释中建议的那样: git reset --hard origin/master

如果您尚未将更改推送到远程

git reset HEAD~1

git status检查工作副本是否干净。

否则,您已将更改推送到远程

git revert HEAD

此命令将还原 / 删除本地提交 / 更改,然后您可以按

git reset --hard origin/master

将其重置为原点。

这是 @bdonlan 在评论中发布的。我为不阅读评论的人添加了此答案。