Решение простое:
git filter-branch [options] -- --all
Обратите внимание на четыре тире (два набора двойных тире с пробелом между ними) в -- --all
.
Если вы посмотрите на документы для git-filter-branch
, это говорит:
git filter-branch [--env-filter <command>] [--tree-filter <command>]
[--index-filter <command>] [--parent-filter <command>]
[--msg-filter <command>] [--commit-filter <command>]
[--tag-name-filter <command>] [--subdirectory-filter <directory>]
[--prune-empty]
[--original <namespace>] [-d <directory>] [-f | --force]
[--] [<rev-list options>…]
Читая дальше, в начале документа говорится: «Позволяет переписать историю изменений git, переписавветви, упомянутые в, применяя настраиваемые фильтры к каждой ревизии. "
Таким образом, проверка документов для rev-list
дает:
<опции списка ревизий> ... Аргументы для списка ревью git.ссылки, включенные в эти опции, переписаны. Вы также можете указать такие опции, как --all, но вы должны использовать -, чтобы отделить их от опций git filter-branch.
И документы для git-rev-list
говорят:
--all
Pretend as if all the refs in refs/ are listed on the command line as <commit>.