Git : Suppression et désactivation du suivi des fichiers

Pour retirer un fichier du suivi dans Git, il est nécessaire de le supprimer de la zone de staging avant de valider les changements. La commande git rm permet de réaliser cette opération, en effaçant également le fichier du répertoire de travail, afin qu'il n'apparaisse plus comme non suivi.

Si vous supprimez manuellement un fichier depuis le répertoire de travail, l'exécution de git status affichera le fichier dans la section "Changes not staged for commit".

$ rm application.log
$ git status
Sur la branche master
Modifications qui ne seront pas validées :
  (utilisez "git add/rm <fichier>..." pour mettre à jour ce qui sera validé)
  (utilisez "git checkout -- <fichier>..." pour annuler les modifications dans la copie de travail)

	supprimé : application.log

aucune modification ajoutée à la validation (utilisez "git add" et/ou "git commit -a")

Ensuite, lancez git rm pour enregistrer la suppression du fichier :

$ git rm application.log
rm 'application.log'
$ git status
Sur la branche master
Modifications qui seront validées :
  (utilisez "git reset HEAD <fichier>..." pour désindexer)

	supprimé : application.log

Après la validation, le fichier ne sera plus géré par Git. Si le fichier avait été modifié et ajouté à la zone de staging avant la suppression, l'option -f (force) est requise pour éviter de perdre les modifications enregistrées.

Dans certains cas, il peut être nécessaire de retirer un fichier du suivi Git (c'est-à-dire de la zone de staging) tout en le conservant dans le répretoire de travail. Cela s'avère utile pour des fichiers volumienux comme des journaux ou des binaires qui ont été ajoutés accidentellement. L'option --cached de git rm permet cette désactivation :

$ git rm --cached config.ini

La commande accepte également des modèles glob pour cibler plusieurs fichiers. Par exemple, pour supprimer tous les fichiers .log dans le répertoire logs/ :

$ git rm logs/*.log

Notez que l'astérisque * est précédée d'un antislash \ pour empêcher l'expansion par le shell et permettre à Git de gérer le modèle de manière récursive. Cette approche garantit que seuls les fichiers correspondants sont retirés.

Une alternative pour désactiver le suivi est d'utiliser la commande git update-index --assume-unchanged <fichier>. Cette méthode masque temporairement les modifications apportées au fichier, mais elle ne fonctionne que pour les fichiers non encore indexés dans la zone de staging. Si nécessaire, réinitialisez d'abord le fichier avec git reset <fichier> avant d'appliquer cette option.

Étiquettes: Git git-rm file-removal untracking version-control

Publié le 1 juillet à 21h03