滚动回上次提交时git重置的问题

时间:2011-08-25 08:29:05

标签: git reset

我意外地提交了这个巨大的垃圾文件夹并将其推送到git中。之后我还有一次提交。所以就像这样

A - B - C - D

C - 是有问题的提交

在意识到错误之后我使用了命令

git reset --hard <sha1-commit-id-of-B>

git push origin HEAD --force

回滚到B.这很好,但回购的大小仍然相同。我很困惑。我怎样才能摆脱不需要的文件(永久),所以它不会出现在git上?

2 个答案:

答案 0 :(得分:3)

即使以这种方式移回分支指针,git也不会立即垃圾收集现在不再引用的对象。这是一件好事 - 例如,这意味着,如果您错误地执行git reset --hard,那么您可以轻松地恢复旧提交,通常使用reflog来查找这些提交的对象名称,并从其中一个创建一个分支。如果你真的想立即进行垃圾收集以收回空间,你可以这样做:

git gc --prune=now

然而,人们几乎不需要这样做......

答案 1 :(得分:0)

使用http://git-scm.com/docs/git-filter-branch,但风险自负!