Aller au contenu

git rm

Description de la commande git rm

La commande git rm supprime des fichiers spécifiques ou un groupe de fichiers d'un dépôt Git. La fonction principale de git rm est de supprimer les fichiers suivis de l'index. git rm peut également être utilisé pour supprimer des fichiers à la fois de l'index de staging et du répertoire de travail. Cependant, un fichier ne peut pas être supprimé uniquement du répertoire de travail. Il convient de mentionner que la commande git rm ne supprime pas les branches. Remarque : git rm ne fonctionne que sur les fichiers suivis. Il échouera si vous essayez de supprimer un fichier non suivi.

git revert1

Utilisation de la commande git rm

<file>…​Spécifie les fichiers à supprimer.
-f --forceIgnore la vérification de sécurité qui s'assure que les fichiers dans HEAD correspondent au contenu de l'index de staging et du répertoire de travail.
-n --dry-runExécute la commande git rm mais en réalité ne supprime pas les fichiers. Elle affiche uniquement les fichiers qui auraient été supprimés.
-rAbréviation de 'récursif'. git rm supprime un répertoire cible et tout son contenu lorsqu'il fonctionne en mode récursif.
--Fait une distinction claire entre une liste de noms de fichiers et les arguments passés à git rm.
--cachedSpécifie que la suppression doit se produire uniquement sur l'index de staging. Les fichiers du répertoire de travail sont laissés tels quels.
--ignore-unmatchSe termine avec un statut 0 même si aucun fichier ne correspond. Il s'agit d'un code de statut de niveau Unix.
-q --quietMasque la sortie de la commande git rm. La commande git rm affiche généralement une ligne pour chaque fichier supprimé.

Annulation de git rm

La commande git rm met à jour l'index de staging et le répertoire de travail. Ces modifications ne seront pas enregistrées jusqu'à ce qu'un nouveau commit soit créé. Elles peuvent être annulées à l'aide de commandes Git. Pour annuler la mise en pause de la suppression (en laissant le fichier supprimé dans le répertoire de travail), utilisez : git reset HEAD

bash
git reset HEAD

Pour restaurer complètement le fichier dans sa dernière version à la fois dans l'index de staging et le répertoire de travail, utilisez la commande moderne git restore : git restore

bash
git restore <file>

(Remarque : git checkout . est déprécié pour la restauration de fichiers.)

Pour supprimer un fichier uniquement de l'index de staging (en le laissant dans le répertoire de travail), utilisez le drapeau --cached : git rm --cached

bash
git rm --cached <file>

Utilisez git reflog pour trouver une référence avant l'exécution de git rm, au cas où git rm serait exécuté et qu'un nouveau commit serait créé pour enregistrer la suppression.

Git rm vs rm

Lorsqu'une commande shell rm ordinaire est exécutée sur un fichier qu'il suit, le dépôt Git le reconnaît et met à jour uniquement le répertoire de travail pour refléter la suppression. Pour ajouter les modifications à l'index de staging, la commande git add doit également être exécutée. La commande git rm met à jour à la fois l'index de staging et le répertoire de travail avec la suppression.

Exemples

Considérons l'exemple suivant :

git rm avec des caractères génériques

bash
git rm folder/\*.txt

Nous utilisons une expression générique de fichier pour supprimer tous les fichiers *.txt. Ces fichiers sont des enfants directs du répertoire folder. Nous plaçons un antislash avant l'astérisque pour empêcher le shell d'expanser le caractère générique. Ensuite, le caractère générique expande les chemins d'accès des fichiers et des sous-répertoires.

git rm -f

bash
git rm -f git-*.sh

L'option force est utilisée dans l'exemple pour supprimer les fichiers cibles du répertoire de travail et de l'index de staging.

Suppression de fichiers n'existant plus dans le système de fichiers

Si vous souhaitez enregistrer tous les fichiers supprimés en tant que composant du commit suivant, ajoutez les suppressions à l'index d'abord avec `git add -u`, puis exécutez `git commit`.

Mais si vous souhaitez supprimer en continu tous les fichiers qui ont été supprimés avec le shell rm, utilisez la commande ci-dessous, qui créera une liste de tous les fichiers supprimés du répertoire de travail et la transmettra à git rm --cached pour mettre à jour l'index de staging :

git rm --cached

bash
git diff --name-only --diff-filter=D -z | xargs -0 git rm --cached

Pratique

Quelles sont les fonctions et les options de la commande 'git rm' ?

Trouvez-vous cela utile?

Aperçu dual-run — comparez avec les routes Symfony en production.