2011-05-11 87 views
0

我需要从git历史记录中删除一些过时的文件,因此我遵循使用“git filter-branch ...”的方法在各种问题和git手册中提出。运行这个命令后,我现在看到我的“git log”中所有重写的提交,所以我现在有大约30次提交(删除3个文件后)而不是最初的10次提交。如何清理git过滤器分支后git中过时的重写提交

我尝试了在各种答案中提供的建议,以删除“.git/refs/originals”,然后“git reflog expire ...”和“git gc --aggressive --prune”等,但我仍然有30次提交。我也尝试了将我的存储库复制到新存储库的建议,新存储库也有30个提交。我也推到github,现在有30个提交。

是否有任何我想丢掉覆盖的提交(没有做rebase操作)。我的目标是只摆脱“重复”提交,而不是压缩提交。

谢谢!

回答

0

你也可以尝试rebase -i --preserve-merges或者脚本git cherry-pick --no-commit来做你想做的事。

希望这会有所帮助

+0

我特别不想手代码rebase命令,因为我将不得不樱桃选择所有原始提交,通过重新合并冲突等我想要的是一种方法来擦除旧的提交被重写。 – rraheja 2011-05-13 04:30:39

+0

将过期时间设置为0后,可以通过运行git gc来忘记旧提交。一旦删除了旧提交的所有引用,那些对象将被垃圾收集。 – 2011-05-14 00:24:59

2

您究竟运行了哪些命令?这可能是最好的做一个新的克隆这个回购,然后再试一次。有关于help.github的指南可能有所帮助。

+0

github链接命令正是我使用的。但是,当我做一个“git日志”时,它显示了原始提交和新改写的提交。在github链接中运行清除和清理命令并没有抹掉那些旧的提交。推动github将所有这些旧提交复制到github。所以在所有的回购中,我现在也有旧的提交。我试图克隆一个新的回购,但它仍然带来旧的提交。 – rraheja 2011-05-13 04:27:16

+0

您可以通过电子邮件[email protected]了解更多详细信息......您运行的命令的回购和会话转储会很好。 – Tekkub 2011-05-13 08:01:55