Was sind checkout
s in git?
Ich weiß, sobald Sie checkout
einen bestimmten Zweig bearbeiten, die HEAD
Punkte auf diesen Zweig. Aber was bedeutet das wirklich? Bedeutet das, dass ich dann an diesem Zweig arbeiten kann? Wenn ja, kann ich ohne Auschecken einer Filiale nicht daran arbeiten?
Was bedeutet remote checkout
das auch? Wie ist es nützlich?
git
git-checkout
daehaai
quelle
quelle
Antworten:
Wie Sie bemerkt haben,
HEAD
ist eine Beschriftung angegeben, wo Sie sich im Festschreibungsbaum befinden. Es bewegt sich mit Ihnen, wenn Sie von einem Commit zum anderen wechseln.git checkout <commit>
ist der grundlegende Mechanismus, um sich im Festschreibungsbaum zu bewegen und Ihren Fokus (HEAD
) auf das angegebene Festschreiben zu verschieben.Die begehen kann durch eine beliebige einer Anzahl von Arten angegeben werden, commit hash, Zweigname, Tag - Namen, um die relative Syntax (
HEAD^
,HEAD~1
, etc.) und so weiter. Es ist oft nützlich, eine Kasse als Zweigwechsel zu betrachten, und es gibt einige Optionen, die aus dieser Perspektive funktionieren, aber alle verweisen auf Commits.Das Auschecken eines Commits hat andere Nebenwirkungen als das Bewegen
HEAD
.-b
Option wird ein neuer Zweig basierend auf dem aktuellen Commit erstellt und dann aktiviert.--track
Option kann der ausgecheckte Zweig auf einen entfernten Zweig aufmerksam gemacht werden--orphan
Option wird ein neuer Zweig erstellt (wie mit-b
), der jedoch nicht auf einem vorhandenen Commit basiert.Es gibt noch ein paar weitere Optionen, über die Sie in der Manpage zum Auschecken von Git lesen können. Alle Optionen drehen sich um das Wechseln von einem Commit zum anderen - nur in der Auswirkung, die dieser Zug zusätzlich zum Verschieben hat
HEAD
.quelle
git checkout <commit> <path>
keine Zweige gewechselt werden.git checkout <path>
.Lassen Sie mich einige Anwendungsfälle des Auscheckens mit Dateien, Ordnern und Zweigen erläutern, damit dies zum Verständnis hilfreich sein kann.
Nehmen wir an, wir haben einen Ordner mit dem Namen
dev
undindex.html
alles wird verfolgt und das Arbeitsverzeichnis ist sauber.Wenn ich versehentlich den Dateinamen ändere
index.html
und rückgängig machen möchte, dass ich ihn einfach verwendegit checkout index.html
, wird dieser Dateistatus aus dem aktuell ausgewählten Repository-Zweig wiederhergestellt.Nun, wenn ich etwas im
dev
Ordner geändert habe und das wiederherstellen möchte. Ich kann verwenden,git checkout dev
aber was ist, wenn es bereits einen Zweig mit dem Namen gibt,dev
anstatt diesen Ordner auszuchecken, wird dieser Zweig heruntergezogen. Um das zu vermeiden, würde ich es lieber tungit checkout -- dev
.Hier steht Bare Double Dash für den aktuellen Zweig und fragt Git nach dem Ordner
dev
des aktuell ausgewählten Zweigs.Wenn ich das tue
git checkout alpha dev
, wird der Dev-Ordner vom Alpha-Zweig heruntergezogen.Diese Antwort ist für Ihre erste Frage "Git Checkout wirklich bedeuten".
quelle
"Auschecken" bedeutet, dass Sie ein bestimmtes Commit aus dem Repository übernehmen und den Status der zugehörigen Datei und des Verzeichnisbaums im Arbeitsverzeichnis neu erstellen.
Wenn Sie ein Commit auschecken, das kein Verzweigungskopf ist (z. B.
git checkout HEAD~2
), befinden Sie sich auf einem sogenannten abgetrennten Kopf. Sie können hier Commits erstellen. Sobald Sie jedoch zu einem anderen Zweig wechseln, können diese Commits nicht über einen Filialnamen wiederhergestellt werden und werden möglicherweise nach einiger Zeit sogar vom Garbage Collector entfernt.quelle