2014-02-14 7 views
1

я это сделал:мерзавец фильтр-филиал --tree-фильтр оставил меня с 2х объектов коммитов

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 коммитов, и не более того.

+0

Я думаю, я знаю, почему - у меня есть теги, которые неизменны, и они, вероятно, предотвратить GIT дс от сбора деревьев ..... Ну .. Мне нужно как-то перемаркировать деревья или удалить теги, чтобы эти деревья можно было собрать. – Dennis

ответ

1

Проверьте наличие тегов, которые вы, возможно, создали, которые могут удержать старое дерево от сбора мусора.
А именно, git-filter-branch оставляет метки на исходном дереве нетронутыми и не переводит их в новое дерево.

Чтобы избавиться от него, я сделал что-то вроде

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

пока все оригинальные и дополнительные теги не пропали

+0

Слишком плохо, что большинство других упоминаний этой команды не говорят об удалении тегов в первую очередь. –