2015-09-18 48 views
2

我做了一个boo-boo。在我犯下之前,我忘了补充一些东西。我推了。然后我意识到自己的错误并修改了提交并试图强制推送(其他人本来可以得到提交的,不要让我失望!)但是强制推送被禁用。我能够解决我的历史和推动。这是如下:如何删除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 

这里是远程的历史,发现的385f1b6的abscence和7eb0c6a

* 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指出,

“不是那个缺失的从硬盘驱动器可见历史和物理删除重复的是两个非常不同类型的删除,这个问题要求前者,另一个要求后者。“

+2

可能重复[如何硬删除一个孤儿在git的承诺?(http://stackoverflow.com/questions/7907372/how-to-hard-delete-an-orphan- commit-in-git) – GolfWolf

+0

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

+0

@ hvd我没有意识到这种区别。我撤回了我的投票。谢谢!我今天学到了东西。 :) – GolfWolf

回答

3

可能标记(也可能是分支)使thos提交显示在您的历史记录中。对于初学者来说,删除标签:

git tag -d oops 

现在,如果你想摆脱这两个提交都是在一个分支(你可以使用git log --all --decorate --oneline --graph让你的历史视野清晰),那么你需要删除分支,以及:

git branch -d <oops-branch> 
+0

修好了!谢谢!具有讽刺意味的是,教程告诉我要标记它,并且我试图将其删除,这就是保持它的原因。 –