Was ist der Unterschied zwischen HEAD
und master
in Git?
Ich habe einen Klon eines Projekts auf GitHub erstellt und möchte meine Änderungen auf die Fernbedienung übertragen. Aber auf welches soll ich drängen?
Was ist der Unterschied zwischen HEAD
und master
in Git?
Ich habe einen Klon eines Projekts auf GitHub erstellt und möchte meine Änderungen auf die Fernbedienung übertragen. Aber auf welches soll ich drängen?
Antworten:
master
ist ein Verweis auf das Ende eines Zweigs. Standardmäßig (und standardmäßig) ist dies normalerweise der Hauptintegrationszweig, muss es aber nicht sein.
HEAD
ist eigentlich eine spezielle Art von Referenz, die auf eine andere Referenz verweist. Es kann auf zeigen master
oder nicht (es zeigt auf den Zweig, der gerade ausgecheckt ist). Wenn Sie wissen, dass Sie sich für die master
Zweigstelle engagieren möchten, klicken Sie hier.
Hier ist ein visuelles Beispiel:
In Ihrem eigenen Repository können Sie überprüfen, wohin das HEAD
zeigt, indem Sie Folgendes ausführen:
$ git symbolic-ref HEAD
refs/heads/master
Es remotes/origin/HEAD
ist jedoch schwieriger herauszufinden, wohin das zeigt, da es sich auf dem Remote-Computer befindet.
Hier gibt es ein tolles kleines Tutorial zu Git-Referenzen:
http://people.gnome.org/~federico/news-2008-11.html#pushing-and-pulling-with-git-1
Die einfache Antwort lautet: Dies HEAD
ist ein Zeiger / eine Bezeichnung auf das letzte Commit des Zweigs, in dem Sie sich gerade befinden. master
ist der Standardzweig, der erstellt wird, wenn Sie ein Git-Repository initialisiert haben (z git init
. B. ).
Sie können den master
Zweig löschen (zB git branch -D master
). Sie können den HEAD
Zeiger nicht löschen .
HEAD
ist ein Zeiger / eine Bezeichnung auf das letzte Commit des Zweigs, in dem Sie sich gerade befinden." Ich denke, das ist bestenfalls irreführend. Wenn Sie ein älteres Commit auschecken, ist HEAD jetzt ein Zeiger auf dieses ältere Commit und nicht auf das letzte Commit. Richtig?
checkout
entspricht der Befehl für Git dem Wechseln von Zweigen in anderen gängigen SCM-Systemen.
HEAD
Zeiger wirklich ist. Ich freue mich über Ihren Kommentar und denke, dass andere dies auch tun werden. Der Inhalt meines ursprünglichen Beitrags und Ihr nachfolgender Kommentar ergänzen sich gegenseitig. Vielen Dank.
Drücken Sie einfach die Änderungen Ihrer aktuellen Filiale
git push origin
und es wird Ihren Zweig ' B
' Änderungen an ' origin/B
' verschieben.
Wenn Sie in Ihrem master
Zweig sind, wird git auf drücken origin/master
.
Tatsächlich werden alle Änderungen auf die lokalen Zweige übertragen, bei denen übereinstimmende entfernte Zweige vorhanden sind origin
. Es wird durch die Konfigurationseinstellung push.default gesteuert .
Siehe auch RefSpecs im Pro Git-Buch .
Was Sie sehen, ist die Seitenleiste, die alle Refspecs Ihres Remote-Repos in der experimentellen GitX-Gabel des GitX-Projekts darstellt .
Das HEAD
bestimmt den Standardzweig für diese Fernbedienung.
Siehe git remote set-head
Manpage :
Ein Standardzweig für eine Fernbedienung ist nicht erforderlich, ermöglicht jedoch die Angabe des Namens der Fernbedienung anstelle einer bestimmten Verzweigung.
Wenn beispielsweise der Standardzweig für festgelegtorigin
istmaster
,origin
kann er überall dort angegeben werden, wo Sie normalerweise angeben würdenorigin/master
.