Was ist der Unterschied zwischen Git Clone und Checkout?

335

Was ist der Unterschied zwischen git cloneund git checkout?

Praveen Sripati
quelle
1
Siehe auch
Mat

Antworten:

337

Die Manpage zum Auschecken: http://git-scm.com/docs/git-checkout

Die Manpage für den Klon: http://git-scm.com/docs/git-clone

Zusammenfassend lässt sich sagen, dass der Klon zum Abrufen nicht vorhandener Repositorys und zum Umschalten zwischen Zweigen in einem bereits vorhandenen Repository dient.

Hinweis: Für diejenigen, die einen SVN / CVS-Hintergrund haben und neu bei Git sind, entspricht dies git cloneSVN / CVS checkout. Der gleiche Wortlaut verschiedener Begriffe ist oft verwirrend.

August Lilleaas
quelle
41
checkoutkann auch an andere Dinge gewöhnt sein, z. B. das Überschreiben einer Datei in Ihrer Arbeitskopie mit einer Version dieser Datei aus einer anderen Revision.
Svick
8
und wann benutzt du "pull" vs "checkout"?
Kokodoko
27
Pull ist ein Abruf plus Zusammenführen, Checkout ist eine lokale Operation, die nur Daten verarbeitet, die bereits abgerufen wurden. Es ist also überhaupt nicht wie eine SVN-Kasse.
August Lilleaas
13
Als ich aus der SVN-Welt kam, war ich auch verwirrt. Wow ... was für ein Durcheinander. In einer idealen Welt würde ich jeden Hersteller von Versionsverwaltungssystemen dazu zwingen, dieselben Begriffe zu verwenden.
Zoltán Tamási
5
Fork ist ein Github-Begriff und ist nicht mit Git selbst verwandt.
August Lilleaas
123

Git-Klon dient zum Abrufen Ihrer Repositorys vom Remote-Git-Server.

git checkout dient zum Auschecken des gewünschten Status Ihres Repositorys (z. B. Zweige oder bestimmte Dateien).

Sie befinden sich derzeit in der Hauptniederlassung und möchten in die Entwicklungsniederlassung wechseln.

git checkout develop_branch

Sie möchten beispielsweise zu einem bestimmten Status einer bestimmten Datei auschecken

git checkout commit_point_A -- <filename>

Hier ist eine gute Referenz zum Erlernen von Git, mit der Sie viel einfacher verstehen können.

Kit Ho
quelle
20
"vom Remote-Git-Server" - Der Server muss nicht remote sein. git clonefunktioniert auch mit lokalen Repos.
SET
1
Vielen Dank für den Link zu einem visuellen Verweis auf git!
David Pointer
@ Kit Ho: Der Link ist in Ordnung als Referenz, aber es ist nicht viel Hilfe für jemanden mit grundlegenden Fragen zu Git wie die oben genannte Person. Wie der Artikel selbst sagt: "Sobald Sie ein wenig über die Funktionsweise von Git wissen, kann diese Website Ihr Verständnis festigen"
SN
Zirkuläre Definitionen sind nicht so hilfreich. Das Wort "fetch", das zur Beschreibung des Klons verwendet wird, ist nützlich und fügt Bedeutung hinzu, aber der Ausdruck "checkout is to checkout ..." fügt weder Bedeutung hinzu, noch hilft es tatsächlich, den Unterschied zwischen den beiden Operationen zu unterscheiden.
C Perkins
11

Eine Sache zu bemerken ist das Fehlen eines "Copyout" innerhalb von Git. Das liegt daran, dass Sie bereits eine vollständige Kopie in Ihrem lokalen Repo haben - Ihr lokales Repo gehört zu cloneIhrem ausgewählten Upstream-Repo. So haben Sie effektiv eine persönliche checkoutvon alles , ohne in der Referenz Repo auf diese Dateien einige ‚Sperre‘ zu setzen.

Git stellt die SHA1-Hashwerte als Mechanismus zur Verfügung, um zu überprüfen, ob die Kopie einer Datei / eines Verzeichnisbaums / eines Commits / eines Repos genau der entspricht, die von jedem verwendet wird, der in der Lage ist, Dinge innerhalb der Vertrauenshierarchie als "Master" zu deklarieren. Dies vermeidet all jene "Sperren", die dazu führen, dass die meisten SCM-Systeme ersticken (mit den üblichen Problemen von privaten Kopien, großen Zusammenführungen und keiner wirklichen Kontrolle oder Verwaltung des Quellcodes ;-)!

Philip Oakley
quelle
4
In der Frage werden keine Sperren erwähnt, und heutzutage sollte standardmäßig davon ausgegangen werden, dass eine Person mit diesem Konzept nicht vertraut ist. Daher sollten diese Unterschiede zu alten VCS nur erklärt werden, wenn sie explizit gestellt werden.
wRAR
6

Einfach Git Checkout haben 2 Verwendungszwecke

  1. Wechseln zwischen bestehenden lokalen Filialen wie git checkout <existing_local_branch_name>
  2. Erstellen Sie mit dem Flag -b einen neuen Zweig aus dem aktuellen Zweig. Angenommen, Sie befinden sich am Hauptzweig git checkout -b <new_feature_branch_name>, erstellen einen neuen Zweig mit dem Inhalt des Masters und wechseln zum neu erstellten Zweig

Weitere Optionen finden Sie auf der offiziellen Website

Khader MA
quelle
Nett. Diese -bOption ist fantastisch, da ein neuer lokaler Zweig erstellt und gleichzeitig mit einem einzigen Befehl ausgecheckt wird. Liebte es!
RBT
2

checkout kann für viele Fälle verwendet werden:

1. Fall : Wechsel zwischen Zweigstelle im lokalen Repository Zum Beispiel: git checkout exists_branch_to_switch

Sie können auch einen neuen Zweig erstellen und in diesem Fall mit ausschalten -b

git checkout -b new_branch_to_switch

2. Fall : Datei von x rev wiederherstellen

git checkout rev file_to_restore ...

Goms
quelle