Переписывание истории Git — сложный процесс, и git-filter-branch
не упрощает его (см. ниже), поэтому вместо этого используйте BFG, более простая и быстрая альтернатива git-filter-branch
, специально разработанная для удаления ненужных файлов из истории Git.
Внимательно следуйте инструкциям по использованию BFG. Основная часть заключается в следующем:
$ java -jar bfg.jar --delete-folders incubator my-repo.git
Любая папка с именем incubator
(которой нет в вашем последнем коммите) будет удалена из истории вашего репозитория Git. Затем вы можете использовать git gc
для очистки мертвых данных:
$ git gc --prune=now --aggressive
BFG обычно в 10–720 раз быстрее, чем работает git-filter-branch
, и в целом проще в использовании.
... диагностика сбоя ветки фильтра git?
Поскольку (как упоминалось выше) переписывание истории Git — сложное дело, существует множество способов, которыми это может пойти не так, поэтому вам, возможно, придется добавить больше деталей в то место, где вы говорите, "Но ни один из они сработали" в вашем вопросе. Заклинание git filter-branch
, которое вы используете, выглядит так, будто оно должно что-то сделать — оно удалит папку incubator
из вашей ветки master — так оно, по крайней мере, сделало это? Возможно, вы хотели удалить его из других веток, и в этом случае вам нужно добавить флаг --all
, или, возможно, вы также хотели удалить его из помеченных коммитов, для чего потребуется --tag-name-filter cat
. Подробнее: https://stackoverflow.com/a/21023615/438886
Еще много чего может пойти не так, лучше использовать BFG, если можете.
Полное раскрытие: я автор BFG Repo-Cleaner.
person
Roberto Tyley
schedule
10.02.2015