git checkout
Definition
Der Befehl git checkout wechselt zwischen Branches oder stellt Dateien im Arbeitsbaum wieder her. Er arbeitet mit Dateien, Commits und Branches. Der Befehl git checkout ermöglicht das Wechseln zwischen mehreren Features in nur einem Repository.
Branches auschecken
Der Befehl git checkout arbeitet mit dem Befehl git branch zusammen. Er aktualisiert die Dateien im Arbeitsverzeichnis, um der in diesem Branch gespeicherten Version zu entsprechen, und weist Git an, alle neuen Commits zu protokollieren. Der Befehl git checkout kann mit git clone in Verbindung gebracht werden. Der Befehl git clone lädt Code aus einem Remote-Repository herunter, während git checkout verwendet wird, um Codeversionen auf dem lokalen System zu wechseln.
Vorhandene Branches auschecken
Nehmen wir an, es gibt ein Repository, das bereits vorhandene Branches enthält. Wenn Sie zwischen diesen Branches wechseln möchten, können Sie git checkout aufrufen. Die Ausführung von git branch zeigt die Liste der verfügbaren Branches und den Namen des aktuellen Branches an.
git checkout branch
git branch
master
test_branch
feature_branch
git checkout feature_branchNeue Branches auschecken
Der Befehl git branch wird ausgeführt, um einen neuen Branch zu erstellen. Das Argument git checkout -b erstellt jedoch einen neuen Branch und wechselt direkt dorthin:
git checkout -b
git checkout -b <new_branch>Im angegebenen Beispiel weist die Option -b Git an, git branch <new\_branch> auszuführen, bevor git checkout <new\_branch> aufgerufen wird.
git checkout -b new_branch existing_branch
git checkout -b <new_branch> <existing_branch>Der Befehl git checkout -b erstellt die new\_branch basierend auf dem aktuellen HEAD. Im angegebenen Beispiel wird new_branch stattdessen auf <existing\_branch> basieren, anstatt auf dem aktuellen HEAD.
Branches wechseln
Das Ausführen des folgenden Befehls zeigt HEAD auf die Spitze von <branchname>:
der Befehl git checkout branch
git checkout <branchname>Der Befehl git reflog kann ausgeführt werden, um den Verlauf anzuzeigen. Weitere Informationen dazu finden Sie in unserem Artikel zu git reflog.
Remote-Branches auschecken
Es ist üblich, Remote-Repositories bei der Zusammenarbeit im Team zu verwenden. Jedes Remote-Repository kann seine eigenen Branches enthalten. Um einen Remote-Branch auszuchecken, sollte git fetch ausgeführt werden, um dessen Inhalte abzurufen:
git checkout remote
git fetch --allModerne Git-Versionen ermöglichen das Auschecken des Remote-Branches wie eines lokalen Branches:
git checkout remote branches
git checkout <remote_branch>In älteren Git-Versionen sollten Sie stattdessen einen neuen Branch basierend auf dem Remote-Branch erstellen:
git checkout für Remote-Branches
git checkout <remote_branch> origin/<remote_branch>Checken Sie anschließend einen neuen lokalen Branch aus und setzen Sie ihn mit dem Befehl git reset auf den letzten Commit des Remote-Branches zurück:
der Befehl git checkout
git checkout -b <branchname>
git reset --hard origin/<branchname>Detached HEAD
Der Zustand „Detached HEAD“ ermöglicht es Ihnen, Commits auszuchecken und den älteren Zustand des Repositorys zu untersuchen, ohne einen lokalen Branch zu erstellen. Der HEAD-Zeiger aktualisiert den git checkout, um auf den angegebenen Branch oder Commit zu zeigen. Es treten keine Probleme auf, wenn HEAD auf einen Branch zeigt, aber wenn er auf einen Commit zeigt, wechselt er in einen „Detached HEAD“-Zustand.
Der Zustand „Detached HEAD“ ist eine Warnung, die darauf hinweist, dass Ihre Aktivität „abgekoppelt“ von der Projektentwicklung ist. Wenn Sie ein Feature in einem „Detached HEAD“-Zustand entwickeln, gibt es keinen Branch, der Sie zurückführen kann. Beim Auschecken eines anderen Branches können Sie Ihr Feature nicht referenzieren:

Die Entwicklung muss auf einem Branch stattfinden und nicht im „Detached HEAD“-Zustand sein, um sicherzustellen, dass eine Referenz zu den neuen Commits vorhanden ist. Wenn Sie sich jedoch einen alten Commit ansehen möchten, spielt der „Detached HEAD“-Zustand keine große Rolle.
Practice
Welche Funktionen und Merkmale hat der Befehl 'git checkout'?