Un problème que les débutants rencontrent souvent avec git est de voir un fichier dans l’historique alors que celui ci est décrit dans le fichier .gitignore. Quand vous demandez à Git d’ignorer des fichiers, cela ne fait qu’arrêter de suivre les modifications d’un fichier, et rien d’autre. Le fichier sera toujours dans l’historique et donc conservé.
Si vous voulez supprimer un fichier de votre dépôt, mais le garder dans votre répertoire de travail, utilisez la commande suivante:
1 2 3 |
git rm --cached (file) |
Avec cette commande, le fichier sera conservé dans votre historique. Si vous voulez le supprimer de votre historique, vous avez deux options: réécrire les commits ou tout recommencer. Ces deux options sont mauvaises, et pour une bonne raison: Git essaie au maximum de ne pas perdre vos données. Comme pour le rebasing, Git vous force à faire consciemment ces opérations parce qu’elles entraînent une perte de données.
Si vous voulez vraiment retirer un fichier de l’historique, git filter-branch est l’outil qu’il vous faut. Il vous faudra lire le manuel avant de l’utiliser, car cette commande réécrit les commits relatifs au projet. C’est un bon outil pour pas mal d’opérations, et il permet de faire beaucoup de choses comme supprimer entièrement les commits d’un auteur ou déplacer la racine d’un projet. La commande pour supprimer un fichier de toutes les branch est la suivante:
1 2 3 |
git filter-branch --index-filter 'git rm --cached (file)' HEAD |
Cette opération est utile quand vous avez besoin de détruire des informations sensibles ou confidentielles que vous pourriez avoir dans votre dépôt.