Manchmal schlägt git vor git rm --cached
, eine Datei zu entfernen, manchmal git reset HEAD file
. Wann soll ich welche verwenden?
BEARBEITEN:
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
, sie rückgängig zu machen add
? Wie solltest du dich rm
verhalten?
git init
kein HEAD
Zurücksetzen möglich ist.
rm
impliziert das Löschen in einem Unix-Kontext. Es ist nicht das Gegenteil von Hinzufügen zum Index. Eine Funktion zum Entfernen von Dateien sollte nicht mit Funktionen zum Ändern des Staging-Status überladen werden. Wenn es Implementierungsdetails gibt, die das Kombinieren vereinfachen, deutet dies einfach auf das Fehlen einer durchdachten Abstraktionsebene in git hin, was die Benutzerfreundlichkeit klar machen würde.
git rm
können beide Stufe eine Löschung und auch unstage ein Zusatz )