Supprimer complètement un fichier d'un dépôt git

21 January 2017

Cela arrive de temps en temps, sur une application qu’on connait mal ou qu’on a pas conçue : on fait un dépôt git, le .gitignore, et on oublie un fichier de configuration avec des password dedans.

Et bien sur, manque de pot, vous avez déjà tout envoyer dans un dépôt public Github. Vraiment, c’est pas votre journée…

Bref, il existe une petite astuce pour supprimer un fichier de tout les commits du dépôt. C’est un peu lent, car il va réécrire chaque commit que vous avez fait sur le projet.

git filter-branch --tree-filter 'rm filename' HEAD

Après il faut utiliser git push -f pour réécrire le dépôt en ligne. Généralement, on évite cette opération, mais dans le cas d’un fichier avec des codes d’accès, c’est un moindre mal. Et bien entendu, cela ne vous dispense pas de changer le password en question !