remove delete commits cleaner git git-filter-branch

delete - Git-elimina commits con changeset vacío usando filter-branch



git rewrite file history (2)

¿Cómo elimino commits que no tienen ningún conjunto de cambios usando git filter-branch?

Reescribí mi historial de git usando:

git filter-branch --tree-filter ''rm -r -f my_folder'' -f HEAD

esto funcionó bien, pero ahora tengo muchos commits con changesets vacíos. Me gustaría eliminar esos commits. Preferiblemente en msysgit.

Rebasar no es realmente una opción porque tengo más de 4000 confirmaciones y la mitad de ellas debe eliminarse.


Solo agregue la opción --prune-empty :

git filter-branch --tree-filter ''rm -rf my_folder'' --prune-empty -f HEAD

(Y por supuesto, si tiene otros refs, puede reescribir todo con -- --all lugar de solo HEAD ).

Tenga en cuenta que esto no es compatible con --commit-filter ; en ese caso, Charles Bailey tiene su respuesta .


Solo mirando la documentación de filter-branch , debería poder hacer esto:

git filter-branch --commit-filter ''git_commit_non_empty_tree "$@"'' HEAD