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