Mon commit initial contenait quelques fichiers journaux. J'ai ajouté *log
à mon .gitignore
, et maintenant je veux supprimer les fichiers journaux de mon dépôt.
git rm mylogfile.log
supprimera un fichier du dépôt, mais le supprimera également du système de fichiers local.
Comment puis-je supprimer ce fichier du dépôt sans supprimer ma copie locale du fichier ?
Depuis le [fichier man] (https://git-scm.com/docs/git-rm) :
Lorsque
--cached
est donné, le contenu mis en cache doit correspondre soit à l'extrémité de la branche, soit au fichier sur le disque, permettant au fichier d'être supprimé de l'index seulement.
Donc, pour un seul fichier :
git rm --cached mylogfile.log
et pour un seul répertoire :
git rm --cached -r mydirectory
Pour supprimer un dossier entier du repo (comme les fichiers de Resharper), procédez comme suit :
git rm -r --cached folderName
J'avais commis quelques fichiers Resharper, et je ne voulais pas qu'ils persistent pour les autres utilisateurs du projet.
De plus, si vous avez commis des données sensibles (par exemple, un fichier contenant des mots de passe), vous devez le supprimer complètement de l'historique du référentiel. Voici un guide expliquant comment faire cela : http://help.github.com/remove-sensitive-data/