254 votes

Pourquoi utiliser 'git rm' pour supprimer un fichier au lieu de 'rm' ?

Sur SVN, supprimer quelque chose du système de fichiers directement (plutôt que d'utiliser svn) créait une foule de maux de tête.

Je n'ai pas constaté ce problème lors de l'utilisation de git mais j'ai remarqué que git a ses propres rm ( git rm ).

Quelle est la différence entre rm et git rm ?

4voto

basicxman Points 1382

Supprimer des fichiers de l'index, ou de l'arborescence de travail et de l'index. git rm ne supprimera pas un fichier du seul répertoire de travail.

Voici comment vous pourriez supprimer un fichier à l'aide de la fonction rm -f puis supprimez-la de votre index à l'aide de git rm

$ rm -f index.html
$ git status -s
 D index.html
$ git rm index.html
rm 'index.html'
$ git status -s
D  index.html

Cependant, vous pouvez le faire en une seule fois avec seulement git rm

$ git status -s
$ git rm index.html
rm 'index.html'
$ ls
lib vendor
$ git status -s
D  index.html

4voto

Ali Points 21

Je crois que j'ai enfin compris

Si vous modifiez un fichier file_a.txt

puis faire

git add file_a.txt
rm file_a.txt
git commit -m 'Commit message'

Bien que le fichier soit supprimé du répertoire de travail (c'est-à-dire du disque ou de la corbeille), il n'est pas supprimé de la zone de transit, et les modifications apportées à la zone de transit (c'est-à-dire à l'index) seront donc validées.

si, à la place, vous faites

git add file_a.txt
git rm file_a.txt
git commit -m 'Commit message'

Le fichier sera supprimé du disque et de la zone de transit, de sorte que les modifications ne seront pas validées.

Maintenant, si après votre dernier commit, vous faites soit

rm file_a.txt
git commit -m 'Commit message'

ou

git rm file_a.txt
git commit -m 'Commit message'

Cela ne devrait pas faire de différence, car vous n'avez pas apporté de modifications à la zone de transit ou à l'index, de sorte qu'il n'y a qu'une seule copie du fichier dans le répertoire de travail, de sorte que les deux commandes auront le même impact.

En résumé rm ne supprimera que le disque, et non la zone de transit git rm supprimera à la fois le disque et la zone de mise à disposition (une zone spéciale de git que vous ne pouvez pas atteindre par des commandes Windows ou linux normales).

2voto

Ander Points 331

Si vous utilisez git rm, la suppression fera partie de votre prochain commit. Donc si vous voulez pousser le changement, vous devez utiliser git rm

0voto

liuliang Points 123

git rm est plus sûr que rm dans certains cas, lorsque l'utilisateur utilise un système insensible à la casse comme Windows ou MacOS. Voici quelques exemples.

Supposons que votre dépôt git sur un système insensible à la casse contienne un fichier engagé nommé foo.js et vous rencontrerez une erreur lors de l'exécution de git rm Foo.js . Mais pas avec rm Foo.js au lieu de cela.

-1voto

Tanya sharma Points 1

La meilleure façon d'effacer tous les fichiers et nous pouvons dire la meilleure façon d'effacer toutes les activités git. Utiliser :

rm -rf .git

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X