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.

Utilisation de la commande git rm
<file>… | Spécifie les fichiers à supprimer. |
|---|---|
| -f --force | Ignore 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-run | Exécute la commande git rm mais en réalité ne supprime pas les fichiers. Elle affiche uniquement les fichiers qui auraient été supprimés. |
| -r | Abré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. |
| --cached | Spé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-unmatch | Se termine avec un statut 0 même si aucun fichier ne correspond. Il s'agit d'un code de statut de niveau Unix. |
| -q --quiet | Masque 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
git reset HEADPour 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
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
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
git rm folder/\*.txtNous 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
git rm -f git-*.shL'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
git diff --name-only --diff-filter=D -z | xargs -0 git rm --cachedPratique
Quelles sont les fonctions et les options de la commande 'git rm' ?