Я рекомендую использовать новый инструмент git filter-repo
, который заменяет BFG и git filter-branch
.
Примечание: если вы получаете следующее сообщение об ошибке, когда Выполнение вышеупомянутых команд:
Error: need a version of `git` whose `diff-tree` command has the `--combined-all-paths` option`
это означает, что вам необходимо обновить git
.
См. " Фильтрация на основе пути":
git filter-repo --path file-to-remove --invert-paths
Вы можете объединить его с фильтрацией ссылок: сначала добавьте URL-адрес исходного репо (который вы разветвили) в локальное репо:
cd /path/to/local/clone/of/my/fork
git remote add upstream /url/original/repo
git fetch upstream
То Кстати, вы можете ограничить фильтрацию только вашими коммит-коммитами.
Вот пример, предполагающий, что вы добавили коммиты поверх upstream/master
.
git filter-repo --path file-to-remove --invert-paths \
--refs upstream/master..<myBranch>