1

我这样做了:

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 次提交,仅此而已。

4

1 回答 1

1

检查您可能创建的标签,这些标签可能会阻止旧树被垃圾收集。
即, git-filter-branch 将原始树上的标签保持不变,并且不会自动将它们移动到新树上。

为了摆脱它,我做了类似的事情

git push . :refs/original/refs/tags/v1.0.x
git push origin :refs/original/refs/tags/v1.0.5

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

于 2014-02-14T21:12:11.823 回答