git filter-branch --tree-filter给我留下了2x提交对象

时间:2014-02-14 18:23:30

标签: git git-filter-branch git-rewrite-history

我这样做了:

git filter-branch --tree-filter '~/fix-lines.sh' -d /dev/shm/repo-temp \
--tag-name-filter cat --prune-empty -- --all

基本上修复一些行结束问题。 (大约793次提交被重写)。然后我意识到嘿,我不妨将我的标签转换为4个空格。所以我这样做了:

git filter-branch --tree-filter '~/fix-tabs.sh' -d /dev/shm/repo-temp \
--tag-name-filter cat --prune-empty -- --all

现在我要经历1594个提交对象(添加了一些新对象)。

显然我的整棵老树仍然在git repo的某个地方?如果是这样,我该如何摆脱它,如何检查它已经消失?我只想保持“原始”重写~800次提交,而不是更多。

1 个答案:

答案 0 :(得分:1)

检查您可能创建的标签,这些标签可能会使旧树无法进行垃圾收集 也就是说,git-filter-branch在原始树上留下标签不变,并且不会将它们自动移动到新树。

为了摆脱它,我做了像

这样的事情
git push . :refs/original/refs/tags/v1.0.x
git push origin :refs/original/refs/tags/v1.0.5

直到所有原始和额外标签都消失了