Pro Git erklärt git reset
wie folgt aus:git reset --hard macht den Arbeitsbaum nicht wie ein Index?
Recap
Der
reset
Befehl diese drei Bäume in einer bestimmten Reihenfolge überschreibt, zu stoppen, wenn Sie es zu sagen:
- den Zweig Kopf bewegen zeigt auf (hier zu stoppen, wenn
--soft
)- Machen Sie den Index wie HEAD aussehen (hier aufhören, es sei denn
--hard
)- das Arbeitsverzeichnis wie der Index aussehen
So wie ich verstanden, dass, wenn ich es tue git reset --hard
, dann meine beiden Index und mein Arbeitsverzeichnis würde genau wie mein Kopf werden. Also ging ich weiter und tat dies:
# make a git repo
mkdir mygitrepo
cd mygitrepo
git init
# init commit
touch old_file
git commit -a
# stage a file
touch staged
git add staged
# create file that is not staged
touch unstaged
Bisher meine Repo sieht wie folgt aus:
HEAD
old_fileindex
old_file + inszeniert
working dir
old_file + inszeniert + unstaged
Nun, wenn ich git reset --hard
ausführen, dann erwarte ich m y-Repo werden:
HEAD
old_fileindex
old_fileworking dir
old_file
Aber ich würde diese Stelle bekommen:
HEAD
old_fileindex
old_fileworking dir
old_file + unstaged
I ähnlichen Test tat durch explizites Ziel Argument übergeben, wie git reset --hard target
, und ich habe ähnliches Ergebnis: inszenierte Dateien sind alle weg, aber unstaged Dateien sind noch vorhanden, nachdem git reset --hard
.
Könnte jemand erklären, wenn ich irgendetwas über git reset
missverstanden habe?
Wusste nicht, dass es nur für verfolgte Dateien funktioniert. Vielen Dank! –