Parfois, git suggère git rm --cached
de supprimer un fichier, parfois git reset HEAD file
. Quand devrais-je utiliser quoi?
ÉDITER:
D:\code\gt2>git init
Initialized empty Git repository in D:/code/gt2/.git/
D:\code\gt2>touch a
D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# a
nothing added to commit but untracked files present (use "git add" to track)
D:\code\gt2>git add a
D:\code\gt2>git status
# On branch master
#
# Initial commit
#
# Changes to be committed:
# (use "git rm --cached <file>..." to unstage)
#
# new file: a
#
D:\code\gt2>git commit -m a
[master (root-commit) c271e05] a
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
D:\code\gt2>touch b
D:\code\gt2>git status
# On branch master
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# b
nothing added to commit but untracked files present (use "git add" to track)
D:\code\gt2>git add b
D:\code\gt2>git status
# On branch master
# Changes to be committed:
# (use "git reset HEAD <file>..." to unstage)
#
# new file: b
#
rm
d'annuler add
? Comment pensez-vous que rm
devrait se comporter?
git init
il n'y a pas HEAD
de réinitialisation.
rm
implique la suppression dans un contexte Unix. Ce n'est pas l'opposé d'ajouter à l'index. Une fonction pour supprimer des fichiers ne doit pas être surchargée de fonctions pour changer l'état de transfert. S'il y a des détails d'implémentation qui les rendent pratiques à combiner, cela indique simplement l'absence d'une couche d'abstraction réfléchie dans git, ce qui rendrait l'utilisabilité claire.
git rm
peut à la fois mettre en scène une suppression et mettre en scène un ajout )