如何在git中删除无用的本地提交?

时间:2015-09-18 14:20:56

标签: git

我做了一个嘘声。在我犯下之前我忘了添加一些东西。我推了然后我意识到我的错误并修改了提交并尝试强制推送(没有其他人可以得到提交,不要让我摔倒!)但强制推送被禁用。我能够修复我的历史和推动。它在下面:

* 46b65b5 Amend previous commit (c1672ab8671) with some missed changes
* c1672ab Clean, rescope, and manage dependencies after running mvn dependency:analyze
| * 7eb0c6a (tag: oops) Revert "Clean, rescope, and manage dependencies after running mvn dependency:analyze"
| * 385f1b6 Clean, rescope, and manage dependencies after running mvn dependency:analyze
|/
* f13ce81 Manage all dependencies at the top level pom

这是远程历史记录,请注意385f1b67eb0c6a

的绝对值
* 46b65b5 Amend previous commit (c1672ab8671) with some missed changes
* c1672ab Clean, rescope, and manage dependencies after running mvn dependency:analyze
* f13ce81 Manage all dependencies at the top level pom

385f1b67eb0c6a只是一个可耻的提示,在推送之前仔细检查我的提交并使我的本地图形难看。我怎么能摆脱他们? 提醒:他们不在团队的存储库中,没有其他人拥有它们,我希望从内存中删除它们是我唯一的耻辱。

我在关注如何解决此类问题或类似问题的教程时标记了oops,但它没有解释如何真正摆脱这些提交。

  

为防止这种情况不重复:正如@hvd所述,

     
    

"不重复。从可见历史记录中删除和从硬盘驱动器中删除物理是两种截然不同的删除方式。这个问题要求前者,另一个要求后者。"

  

1 个答案:

答案 0 :(得分:3)

可能是标记(也许是分支)使你的提交出现在你的历史中。首先,删除标签:

git tag -d oops

现在,如果你想摆脱的那两个提交都在一个分支上(你可以使用git log --all --decorate --oneline --graph来清楚地了解你的历史),那么你也需要删除那个分支:

git branch -d <oops-branch>