协慌网

登录 贡献 社区

丢弃 Git 中的本地提交

由于一些糟糕的挑选,我的本地 Git 存储库目前在原点之前提交了五个提交,并且状态不佳。我想摆脱所有这些提交并重新开始。

显然,删除我的工作目录并重新克隆会这样做,但是再次从 GitHub 下载所有内容似乎有些过分,而且不能很好地利用我的时间。

也许git revert是我需要的东西,但是我不希望在原点(甚至六个)之前结束10 次提交,即使它确实让代码本身恢复到正确的状态。我只想假装最后半小时从未发生过。

是否有一个简单的命令可以做到这一点?这似乎是一个明显的用例,但我没有找到它的任何例子。


请注意,这个问题具体是关于提交而不是关于:

  • 未跟踪的文件
  • 未分期的变化
  • 上演但未提交的变更

答案

如果您的超额提交仅对您可见,您可以执行git reset --hard origin/<branch_name>以返回原点所在的位置。这会将存储库的状态重置为先前的提交,并将丢弃所有本地更改。

做一个git revert做了一个新的提交,以一种让每个人的历史保持清醒的方式删除旧的提交。

只需删除您的本地主分支并重新创建它,如下所示:

git branch -D master
git checkout origin/master -b master

尝试:

git reset --hard <the sha1 hash>

将头重置到你想要的任何地方。使用 gitk 查看您想要的提交。你也可以在 gitk 中重置。