Sur SVN, supprimer quelque chose du système de fichiers directement (plutôt que d’utiliser svn) créait une charge de maux de tête. Jusqu’à présent, en utilisant git, je n’ai pas trouvé que cela posait problème, mais je remarque que git a sa propre implémentation.
Y a-t-il une différence? Est-ce que je fais quelque chose de mal?
Si vous utilisez simplement rm
, vous devrez le suivre avec git add
. git rm
fait en une étape.
Vous pouvez également utiliser git rm --cached
qui supprimera le fichier de l’index (en le mettant en git rm --cached
pour la suppression lors de la prochaine validation), tout en conservant votre copie dans le système de fichiers local.
Supprimer des fichiers en utilisant rm
n’est pas un problème en soi, mais si vous souhaitez ensuite valider que le fichier a été supprimé, vous devrez quand même faire une git rm
, de sorte que vous pouvez le faire dès le départ.
De plus, en fonction de votre shell, en git rm
après avoir supprimé le fichier, vous n’obtiendrez pas de complétion de tabulation, vous devrez donc épeler le chemin vous-même, alors que si vous avez toujours le fichier comme d’habitude.
git rm
supprimera le fichier de l’index et du répertoire de travail (index uniquement si vous avez utilisé --cached
) afin que la suppression soit effectuée pour la prochaine validation.
Lors de l’utilisation de git rm, la suppression fera partie de votre prochain commit. Donc, si vous voulez pousser le changement, vous devez utiliser git rm
Cependant, si vous finissez par utiliser rm au lieu de git rm. Vous pouvez ignorer l’ajout de git et valider directement les modifications en utilisant:
git commit -a
Supprimez les fichiers de l’index ou de l’arborescence de travail et de l’index. git rm ne supprimera pas un fichier uniquement de votre répertoire de travail.
Voici comment vous pouvez supprimer un fichier en utilisant rm -f
, puis le supprimer de votre index avec 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 tout faire en une seule fois avec juste git rm
$ git status -s $ git rm index.html rm 'index.html' $ ls lib vendor $ git status -s D index.html