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