Wenn Sie Git in Ihrer täglichen Arbeit verwenden, ist Git Checkout ein häufiger Befehl. Es wird oft verwendet, um Zweige zu wechseln, und wenn Sie sich die Dokumentation ansehen, können Sie den Ausdruck „Zweige wechseln oder funktionierende Baumdateien wiederherstellen“ sehen.. Aber UNIX sollte Eine Sache tun und es gut machen sein. Das war verwirrend, daher brachte Git 2.23 ein paar Befehle mit, um es zu ersetzen.
Bevor wir die Funktionsweise vorstellen, müssen wir kurz die zugehörigen Git-Konzepte verstehen.
Arbeitskopie (Arbeitsbaumdatei): Bezieht sich auf die Datei im Repository, die auf der Festplatte erscheint.
Index (Staging-Bereich oder Cache): Er bezieht sich darauf, dass Sie Git hinzugefügt haben oder was festgeschrieben werden würde, wenn Sie Git Commit ausführen würden.
HEAD: Es bezieht sich auf den „aktuellen“ oder „aktiven“ Zweig. Wenn wir einen Zweig auschecken müssen (bezogen auf Ihren Versuch, den Zweig mit dem abzugleichen, was in der Arbeitskopie ist), kann nur einer dies tun jeweils ausgecheckt werden.
git checkout kann eine Filiale auschecken oder eine neue Filiale erstellen und in diese auschecken:
# Switched to branch 'test' $ git checkout test # Switched to a new branch 'test' $ git checkout -b test # Switch back to the previous branch $ git checkout - # Switched to a commit $ git checkout master~1
Und Git Switch wird verwendet, um branchenbezogene Funktionen zu übernehmen, sodass es auch Folgendes tun kann:
# Switched to branch 'test' $ git switch test # Switched to a new branch 'test' $ git switch -c test # Switch back to the previous branch $ git switch - # Switched to a commit $ git switch -d master~1
Und wie wir eingangs sagten, kann Git Checkout auch funktionierende Baumdateien wiederherstellen. Dieser Teil der Funktion wird von Git Restore übernommen.
In der Vergangenheit konnten wir git checkout -- main.c verwenden, um die Arbeitsbaumdatei aus dem Index wiederherzustellen. Die Syntax war git checkout [treeish] --
# Restoring the working tree from the index $ git checkout -- ./main.c # Restoring index content from HEAD $ git reset -- ./main.c # Restoring the working tree and index from HEAD $ git checkout HEAD -- ./main.c
Beachten Sie, dass wir beim Wiederherstellen des Indexinhalts von HEAD nur git reset verwenden können und git checkout keine entsprechende Option hat.
Mit einer Grafik anzeigen:
Git Restore erleichtert die Bestimmung, welche Dateien wiederhergestellt werden und wo sie wiederhergestellt werden. Die folgenden Optionen geben den Wiederherstellungsspeicherort an:
-W --worktree -S --staged
Standardmäßig stellen -W und --worktree den Arbeitsbaum aus dem Index wieder her, genau wie wenn keine Optionen angegeben wären (wie git restart -- ./main.c ). Während -S und --staged den Indexinhalt von HEAD wiederherstellen. Wenn beide übergeben werden, werden der Index und der Arbeitsbaum von HEAD wiederhergestellt.
Zum Beispiel:
# Restoring the working tree from the index $ git restore -- ./main.c # Equivalent to $ git restore --worktree -- ./main.c # Restoring index content from HEAD $ git restore --staged -- ./main.c # Restoring the working tree and index from HEAD $ git restore --staged --worktree ./main.c
Mit einer Grafik anzeigen:
Das Obige ist die Standardeinstellung. Wenn wir von einem anderen Commit wiederherstellen möchten, können wir die Option --source verwenden. Z. B.:
# Restore `./main.c` in the working tree with the last commit $ git restore -s HEAD^ -- ./main.c # Equivalent to $ git restore --source=HEAD^ -- ./main.c
Ein weiterer nützlicher Git-Restore-Fall könnte die Wiederherstellung einer falsch behandelten Datei sein. Z. B.:
# Incorrectly deleted files $ rm -f ./main.c # Quickly restore main.c from index $ git restore ./main.c
Für die Batch-Wiederherstellung:
# Restore all C source files to match the version in the index $ git restore '*.c' # Restore all files in the current directory $ git restore . # Restore all working tree files with top pathspec magic $ git restore :/
Die Funktionen von Git Checkout sind klar getrennt: Git Switch wird zum Wechseln von Zweigen verwendet, während Git Restore zum Wiederherstellen funktionierender Baumdateien verwendet wird. Sie bieten eine explizitere Semantik im Einklang mit der UNIX-Philosophie.
Beide Befehle wurden 2019 vorgeschlagen und sind derzeit experimentell. Es kann zu Änderungen kommen, aber in der Regel nicht wesentlich, sodass Sie sie jetzt verwenden können, sie sind leichter zu verstehen und weniger verwirrend.
Wenn Sie dies hilfreich fanden, denken Sie bitte darüber nach Abonnieren Sie meinen Newsletter für weitere nützliche Artikel und Tools zur Webentwicklung. Danke fürs Lesen!
Das obige ist der detaillierte Inhalt vonVergessen Sie Git Checkout: Verwenden Sie stattdessen Git Switch und Git Restore. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!