扔掉Git中的本地提交

由于一些糟糕的偷梁换柱行为,我的本地Git仓库目前比原点多了5个提交,而且状态不佳。我想去掉这些提交,重新开始。

显然,删除我的工作目录并重新克隆就可以了,但从GitHub上重新下载所有的东西似乎有些矫枉过正,也不太适合我的时间。

也许 "git revert "是我所需要的,但我不希望比原点提前10次提交(甚至6次),即使它确实让代码本身回到正确的状态。我只想假装过去半小时的事情没有发生。

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


请注意,这个问题是专门关于commits的,不是的。

  • 未跟踪的文件
  • 未归档的修改
  • 已归档但未提交的修改
解决办法

如果你的多余提交只对你自己可见,你可以只做 git reset --hard origin/。 来移动到原点的位置。这将把版本库的状态重置为之前的提交,并且会丢弃所有本地的修改。

做一个git revert使新的提交删除旧的提交,以保持每个人的历史正常。

评论(11)

只需删除你的本地主分支,然后像这样重新创建它。

git branch -D master
git checkout origin/master -b master
评论(8)

试试吧。

git reset --hard 

来重置你的头像到你想去的地方。使用gitk查看你想去的提交位置。你也可以在gitk中进行重置。

评论(2)