фильтр-ветка не удалит сиротские ветви - PullRequest
0 голосов
/ 21 ноября 2018

У меня большой и старый проект, и я хочу превратить папку в подмодуль

Я использовал

git filter-branch --subdirectory-filter <folder name> -- --all

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

Он сделал то, что я хочу, но было несколько коммитов, которые не были связаны с папкой
, после небольшого исследования я обнаружил, что все несвязанные коммиты были от двух сирответки

Я провел дополнительные исследования и обнаружил, что коммиты ветвей-сирот были включены в

git rev-list --all

Вопрос в том, почему ветки-сироты не были удалены, если у них не былокакое-либо отношение к папке, которую я указал?

и если я не могу удалить их историю в той же команде, что я могу сделать, чтобы удалить всю историю потерянных ветвей?

Изменить:
Я уже пробовал с опцией --prune-empty безрезультатно

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

решение состояло в том, чтобы выполнить следующую команду:

git push origin : <orphan_branch_name> --force

или, альтернативно - перед запуском команды filter-branch, выполните следующее:

git remote in `git branch -r | grep -v "<orpan_branch_names>"; do git checkout --track $remote; done

где <orpan_branch_names>имена сиротских веток, разделенные | (или)

0 голосов
/ 21 ноября 2018

Вы можете попытаться добавить опцию --prune-empty, она удалит коммиты, оставив подкаталог без изменений.

...