删除一个没有推的git提交

我做了一个'git commit',但我没有推到其他人。 所以当我做'git status'的时候,我得到了'#你的分支在1次提交之前先于'master'。

所以如果我想回滚我的顶级提交,我可以做“

git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 

因为当我做'混帐日志'

提交eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
date:9月29日星期二11:21:41 2009-0700


提交db0c078d5286b837532ff5e276dcf91885df2296
date:9月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发表的评论 。 我为那些不读评论的人添加了这个答案。

我已经经历了与以下相同的情况,因为这更容易。 通过传递commit-Id你可以达到你想要去的特定的提交:

 git reset --hard {commit-id} 

当你想删除你最后的提交,所以你需要通过commit-Id你需要移动你的指针commit-Id

 git reset --hard db0c078d5286b837532ff5e276dcf91885df2296 

一种方法是删除本地分支,如果你的本地分支在多个提交之前超出远程,你需要取消所有这些分支,从服务器检出分支。