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 ?

345voto

Andy Points 9657

Si vous n'utilisez que rm vous devrez le faire suivre de git add <fileRemoved> . git rm le fait en une seule étape.

Vous pouvez également utiliser git rm --cached ce qui supprimera le fichier de l'index (en vue de sa suppression lors de la prochaine livraison), mais conservera votre copie dans le système de fichiers local.

2 votes

Bonne réponse. J'ai pu utiliser git reset --hard puis de faire un checkout de master pour sortir de l'état de tête détachée parce que je savais que je n'avais pas de changements non validés. Si vous n'avez pas validé vos modifications, vous pouvez faire un git stash, mais je suis relativement nouveau à git et je ne connais pas la commande exacte. Si vous êtes venu ici en 2014 ou après, j'espère que cette réponse vous a été utile.

0 votes

@Andy - Si j'utilisais rm (au lieu de git rm ) et a supprimé de nombreux fichiers en l'utilisant, et ne veut plus maintenant git pour les suivre. Existe-t-il un moyen d'annuler les modifications ? Je veux git de fouler mon rm comme supprimée puisque je n'ai pas utilisé git rm en premier lieu.

0 votes

Il serait bon que cela soit clairement expliqué dans les documents en ligne (c'est peut-être le cas, mais ce n'est manifestement pas évident, sinon cette question n'aurait pas été posée). Ce serait bien que les utilisateurs sachent qu'ils ne font rien de mal s'ils choisissent la voie de l'OS rm. Et il y a des raisons d'opter pour le système d'exploitation. Par exemple, si vous avez besoin de supprimer un fichier pour tester que quelque chose fonctionne avant de valider le changement, la route OS est un peu plus sûre que l'utilisation de git rm, car dans le cas de git, vous devez déstabiliser l'action, alors que dans l'option OS, vous n'avez qu'à récupérer (je crois).

15voto

hammar Points 89293

Suppression de fichiers à l'aide de rm n'est pas un problème en soi, mais si vous voulez ensuite confirmer que le fichier a été supprimé, vous devrez faire un git rm de toute façon, alors autant le faire dès le départ.

En outre, en fonction de votre shell, il est possible de faire git rm après avoir supprimé le fichier, vous n'obtiendrez pas la complétion par tabulation et vous devrez donc épeler le chemin vous-même, alors que si vous utilisez la fonction git rm alors que le fichier existe toujours, la complétion des tabulations fonctionnera normalement.

10voto

Joseph K Points 1151

En complément de la réponse d'Andy, il y a une utilité supplémentaire à git rm :

  1. Sécurité : Lorsque l'on fait git rm au lieu de rm Git bloquera l'enlèvement s'il y a une divergence entre les données de l HEAD d'un fichier et la version de l'index des étapes ou de l'arbre de travail. Ce bloc est un la sécurité pour empêcher la suppression des modifications en cours.

  2. Sauvegarde : git rm --dry-run . Cette option est une sauvegarde qui exécutera le fichier git rm mais ne supprime pas les fichiers. Au lieu de cela, il affichera les fichiers qu'il aurait supprimés.

10voto

manojlds Points 96599

git rm supprimera le fichier de l'index et du répertoire de travail (seulement de l'index si vous avez utilisé --cached ) afin que la suppression soit mise en place pour la prochaine livraison.

6voto

Struggler Points 67

Cependant, si vous utilisez rm au lieu de git rm, vous pouvez sauter l'étape de git add et valider directement les modifications en utilisant :

git commit -a

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