repositorio - limpiar historial git
Eliminar archivos borrados del historial de git (2)
Estoy tratando de dividir un subproyecto de mi repositorio git. Sin embargo, a diferencia del subdirectorio Detach (mover) en el repositorio Git separado , no lo tengo en su propio subdirectorio (y al moverlo y hacer lo anterior solo se obtiene el historial después del movimiento).
He clonado la rama desde la que quiero separar el subproyecto en su propio repositorio y eliminé todo lo que no esté usando, por lo que básicamente podría usar esto como el repositorio de mi subproyecto.
Ahora quiero deshacerme del historial de todos los archivos que ya no están en este repositorio para mantener solo el historial de archivos de los archivos que quedaron en la descendencia.
Creo que debe ser posible con git-filter-branch pero no puedo entender cómo
Muchas gracias de antemano
Ok, ahora estoy probando con la siguiente técnica, informaré si funcionó, porque parece que se está ejecutando bastante tiempo: en un zsh o bash en un repositorio CLONADO
git log --diff-filter=D --summary <start_commit>..HEAD | egrep -o ''*[[:alnum:]]*(/[[:alnum:].]*)+$'' > deleted.txt
para obtener todos los archivos borrados
for del in `cat deleted.txt`
do
git filter-branch --index-filter "git rm --cached --ignore-unmatch $del" --prune-empty -- --all
# The following seems to be necessary every time
# because otherwise git won''t overwrite refs/original
git reset --hard
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --aggressive --prune=now
done;
Esto podría ser extremadamente peligroso para sus datos, así que solo intente clones.
Aquí hay algunas instrucciones para hacer lo que quieras.
Esto eliminará file_to_remove
:
git filter-branch --index-filter ''git rm --cached --ignore-unmatch file_to_remove'' --prune-empty -- --all