从Git中删除过时的提交

时间:2012-10-14 12:21:49

标签: git commit reset

我做了一些测试提交(测试提交挂钩)并始终将索引重置为我上次正常提交。现在这些陈旧的提交仍然存在:

> git reflog
fcdabf7 HEAD@{0}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29
5c97564 HEAD@{1}: commit: t
fcdabf7 HEAD@{2}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29
ae52246 HEAD@{3}: commit: t
fcdabf7 HEAD@{4}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29
c58aeef HEAD@{5}: commit: t
fcdabf7 HEAD@{6}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29
3a2cc3b HEAD@{7}: commit: test

如何删除它们?并且为了技术理解:如果我单独留下它们,如果我推动它们会被推到上游回购吗?

2 个答案:

答案 0 :(得分:1)

首先,您无需担心悬挂提交进入远程存储库。它们不会被推动,通常会在适当的时候进行清理。

但是,如果要清除此类悬空物体,请尝试运行:

git gc --prune=now

答案 1 :(得分:1)

reflog条目引用的提交本身并不是悬空。要清除reflog,

git reflog expire --expire=0 --all

之后可以用git prune删除 - now-dangling - 提交。