Heim > Web-Frontend > js-Tutorial > Hauptteil

Vergessen Sie Git Checkout: Verwenden Sie stattdessen Git Switch und Git Restore

Barbara Streisand
Freigeben: 2024-10-14 13:28:05
Original
797 Leute haben es durchsucht

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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] -- , wobei treeish als Quelle angegeben werden konnte . Einfache Beispiele:

# 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
Nach dem Login kopieren

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:

Ditch Git Checkout: Use Git Switch and Git Restore Instead

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Mit einer Grafik anzeigen:

Ditch Git Checkout: Use Git Switch and Git Restore Instead

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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 :/
Nach dem Login kopieren

Abschluss

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!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!