tag - git--amend
¿Cómo elimino un archivo grande erróneamente cometido en git (3)
El comando que estás buscando es filter-branch
. Le permite eliminar permanentemente archivos de un alistamiento. Este blog tiene un excelente tutorial sobre cómo eliminar archivos problemáticos del repositorio
Posible duplicado:
¿Cómo purgar un gran archivo del historial de commits en Git?
Hice una estupidez. Imagine que he cometido un archivo de 100 MB. Luego veo esto y borro este archivo y vuelvo a comprometerme. Este es un procedimiento normal para eliminar un archivo.
Pero ahora el efecto secundario es que mi historial es pesado porque se ha guardado este archivo grande (creo que este es el por qué es pesado). Solo estoy usando git local, así que no sincronizo en ningún servidor.
¿Cómo puedo eliminar definitivamente este archivo y ahorrar espacio en el disco?
Puede tomar este excelente script de David Underhill para eliminar el archivo del repositorio de git:
#!/bin/bash
set -o errexit
# Author: David Underhill
# Script to permanently delete files/folders from your git repository. To use
# it, cd to your repository''s root and then run the script with a list of paths
# you want to delete, e.g., git-delete-history path1 path2
if [ $# -eq 0 ]; then
exit 0
fi
# make sure we''re at the root of git repo
if [ ! -d .git ]; then
echo "Error: must run this script from the root of a git repository"
exit 1
fi
# remove all paths passed as arguments from the history of the repo
files=$@
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch $files" HEAD
# remove the temporary history git-filter-branch otherwise leaves behind for a long time
rm -rf .git/refs/original/ && git reflog expire --all && git gc --aggressive --prune
Puedes hacerlo usando el comando git filter-branch
, así:
git filter-branch --tree-filter ''rm -rf path/to/your/file'' HEAD
Puede encontrar más documentación aquí http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-a-git-repository