La solución es simple:
git filter-branch [options] -- --all
Nota los cuatro guiones (dos conjuntos de guiones dobles con un espacio en el medio) en -- --all
.
Si nos fijamos en la documentación para git-filter-branch
, que dice lo siguiente:
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>…]
leyendo, el comienzo de la documentación dice: "Le permite reescribir la historia git revisión reescribiendo las ramas mencionadas en el < Opciones de lista de revisión >, aplicando filtros personalizados en cada revisión. "
lo que comprobar la documentación para rev-list
da:
< opciones rev-list> ... Los argumentos para git rev-list. Se reescriben todas las referencias positivas incluidas en estas opciones. También puede especificar las opciones , como --todas, pero debe usar-- para separarlas de las opciones de git de la rama de filtro.
Y la documentación para git-rev-list
dicen:
--all
Pretend as if all the refs in refs/ are listed on the command line as <commit>.
solo para aclarar, normalmente 'filter-branch' aparece con' HEAD 'al final, '- --all' reemplaza a' HEAD' – EoghanM
¿Cómo puedo hacer que funcione en PowerShell (Windows)? Sigue sacando el error y mostrando el mensaje de ayuda para 'filter-branch'. He intentado cambiar a comillas dobles según la respuesta de Pablo, pero no puedo evitar las comillas dobles (ver mis comentarios sobre la respuesta). – ADTC
Resolví lo anterior mediante el uso de tuberías (en la función de PowerShell). Básicamente: 'git rev-list --all | git filter-branch [opciones] '(no rev-list al final) en lugar de' git filter-branch [opciones] - --all'. – ADTC