Was ist der Unterschied zwischen HEAD
und master
in Git?
Ich habe auf GitHub einen Klon eines Projekts erstellt und möchte meine Änderungen auf die Fernbedienung übertragen. Aber zu welchem soll ich pushen?
master
ist eine Referenz auf das Ende eines Zweigs. Konventionell (und standardmäßig) ist dies normalerweise der Hauptintegrationszweig, muss es aber nicht sein.
HEAD
ist eine spezielle Art von Referenz, die auf eine andere Referenz verweist. Es kann auf master
verweisen oder nicht (es zeigt auf den Zweig, der gerade ausgecheckt ist). Wenn Sie wissen, dass Sie einen Commit für den Zweig master
ausführen möchten, klicken Sie auf Push to this.
Hier ist ein visuelles Beispiel:
In Ihrem eigenen Repository können Sie überprüfen, wo das HEAD
verweist, indem Sie Folgendes ausführen:
$ git symbolic-ref HEAD
refs/heads/master
Finden Sie jedoch heraus, wo die remotes/Origin/HEAD
zeigt auf ist schwieriger, weil es sich auf dem Remote-Computer befindet.
Es gibt hier 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, dass HEAD
ein Zeiger/eine Bezeichnung für das letzte Commit des Zweigs ist, in dem Sie sich gerade befinden. master
ist der Standardzweig, der beim Initialisieren eines Git-Repositorys erstellt wurde (z. B. git init
).
Sie können den Zweig master
löschen (z. B. git branch -D master
). Sie können den Zeiger HEAD
nicht löschen.
Übertragen Sie einfach die Änderungen Ihrer aktuellen Filiale
git Push Origin
und es wird Ihren Zweig pushen 'B
' ändert sich in 'Origin/B
'.
Wenn Sie sich in Ihrem Zweig master
befinden, wird git Push to Origin/master
.
Tatsächlich werden alle Änderungen auf die lokalen Zweige übertragen, deren entfernte Zweige mit Origin
übereinstimmen. Es wird durch die Konfigurationseinstellung Push.default gesteuert.
Siehe auch Drücken von RefSpecs im Pro Git-Buch .
Was Sie sehen, ist die Seitenleiste, die alle Refspecs Ihres Remote-Repos im Experimental GitX-Zweig des GitX-Projekt darstellt.
Das HEAD
bezeichnet den Standardzweig für diese Fernbedienung.
Sehen git remote set-head
man page :
Es ist nicht erforderlich, einen Standardzweig für eine Fernbedienung zu haben, aber der Name der Fernbedienung kann anstelle eines bestimmten Zweigs angegeben werden.
Wenn beispielsweise der Standardzweig fürOrigin
aufmaster
gesetzt ist, kannOrigin
überall dort angegeben werden, wo Sie normalerweiseOrigin/master
.