Comment puis-je supprimer un gros fichier commis à tort dans git

Duplication possible:
Comment purger un énorme fichier de l’historique des commits dans Git?

J’ai fait une chose stupide. Imaginez que j’ai commis un fichier de 100 Mo. Je vois cela et efface ce fichier et valide à nouveau. C’est la procédure normale pour supprimer un fichier.

Mais maintenant, l’effet secondaire est que mon histoire est lourde car elle a sauvé ce gros fichier (je crois que c’est la raison pour laquelle il est lourd). J’utilise uniquement git local, je ne synchronise donc sur aucun serveur.

Comment puis-je supprimer définitivement ce fichier et économiser de l’espace disque?

Vous pouvez le faire en utilisant la commande git filter-branch , comme ceci:

 git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD 

Vous pouvez trouver plus de documentation ici http://dalibornasevic.com/posts/2-permanently-remove-files-and-folders-from-a-git-repository

La commande que vous recherchez est filter-branch . Il vous permet de supprimer définitivement des fichiers d’une inscription. Ce blog a un excellent tutoriel sur la façon de supprimer les fichiers problématiques du référentiel

Vous pouvez prendre ce bon script de David Underhill pour supprimer le fichier du repository 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, eg, 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