Unterschied zwischen HEAD und Master

Lesezeit: 4 Minuten

Unterschied zwischen HEAD und Master
Frederik Heynink

Was ist der Unterschied zwischen der HEAD und master im Git?

Ich habe ein Projekt auf GitHub geklont und möchte meine Änderungen auf die Fernbedienung übertragen. Aber zu welchem ​​soll ich schieben?

Bildschirmfoto

1643914687 164 Unterschied zwischen HEAD und Master
Lee Netherton

master ist ein Verweis auf das Ende einer Verzweigung. Gemäß Konvention (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. Darauf kann es hindeuten master oder es kann nicht (es zeigt auf den Zweig, der gerade ausgecheckt ist). Wenn Sie wissen, dass Sie sich verpflichten möchten master verzweigen und dann dorthin schieben.

Hier ist ein visuelles Beispiel:

Alt-Text

Auf Ihrem eigenen Repository können Sie überprüfen, wo die HEAD zeigt auf, indem er Folgendes ausführt:

$ git symbolic-ref HEAD
refs/heads/master

Finden Sie jedoch heraus, wo die remotes/origin/HEAD zeigt, ist schwieriger, weil es sich auf dem entfernten Rechner 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

  • +1 Genauere Antwort als meine. Siehe auch stackoverflow.com/questions/3301956/… und stackoverflow.com/questions/3301956/… für Illustrationen zu diesen Konzepten.

    – VonC

    8. Dezember 10 um 13:31 Uhr

  • Was meinst du mit “Ende einer Verzweigung”? Ich dachte, der Master wäre ein Zweig für sich …

    – lilredindy

    15. Dezember 21 um 19:55 Uhr

Die einfache Antwort ist die HEAD ist ein Zeiger/Label auf den letzten Commit des Branches, in dem Sie sich gerade befinden. master ist der Standardzweig, der erstellt wird, wenn Sie ein Git-Repository initialisieren (z git init).

Sie können die löschen master Filiale (zB git branch -D master). Sie können die nicht löschen HEAD Zeiger.

  • HEAD ist ein Zeiger/Label auf das neueste Commit des Zweigs, auf dem Sie sich gerade befinden.“ Ich denke, das ist bestenfalls irreführend. Wenn Sie ein älteres Commit auschecken, dann ist HEAD jetzt ein Zeiger auf dieses ältere Commit, nicht auf das neueste verpflichten. Richtig?

    – LarsH

    17. März 16 um 16:36 Uhr

  • Du hast Recht. HEAD ist Ihr neuster Checkout. Aber zu meiner Verteidigung, für Git, die checkout Der Befehl ist das Äquivalent zum Wechseln von Zweigen in anderen gängigen SCM-Systemen.

    – benhorgen

    1. April 16 um 19:38 Uhr

  • Ich sympathisiere … Ich hätte leicht den gleichen Fehler machen können. Der einzige Grund, warum mir das aufgefallen ist, war, dass ich gerade dabei bin zu recherchieren, was HEAD wirklich bedeutet. Gibt es eine Chance, dass Sie Ihre Antwort korrigieren könnten, damit sie richtig ist? Ich finde, HEAD ist ein schwieriges Konzept, um genaue Beschreibungen für Git-Nicht-Experten wie mich zu finden. Und Ratschläge zu haben, die da draußen im Internet sitzen, die geben falsch Informationen über HEAD machen es etwas schwieriger.

    – LarsH

    1. April 16 um 20:58 Uhr


  • Ich denke, Ihr Kommentar ist eine fantastische Klarstellung für alle, die ein genaueres Verständnis dafür suchen, was Git ist HEAD Zeiger ist wirklich. Ich schätze Ihren Kommentar und denke, andere werden es auch tun. Der Inhalt meines ursprünglichen Beitrags und Ihr Folgekommentar ergänzen sich gegenseitig. Danke.

    – benhorgen

    7. April 16 um 1:53 Uhr

  • Eine Formalität, aber wenn Sie einen älteren Commit auschecken, befinden Sie sich nicht mehr auf einem Zweig. Wenn Sie anstelle eines Zweigs einen Commit auschecken, haben Sie einen sogenannten “abgelösten HEAD”, Sie befinden sich nicht mehr “auf einem Zweig”. „Auf einem Zweig“ zu sein bedeutet, dass Ihr HEAD auf einen Zweig verweist, und per Definition befinden Sie sich auf dem neuesten Commit dieses Zweigs. Nur weil Sie den Commit „b54fe7“ ausgecheckt haben und der Master auf diesen Commit zeigt, heißt das nicht, dass Sie sich im Master-Zweig befinden. Es könnte mehrere Zweige geben, die auf denselben Commit zeigen, Sie befinden sich auf demjenigen, auf den HEAD zeigt, falls vorhanden.

    – Jason Goemaat

    19. November 16 um 6:05 Uhr

Unterschied zwischen HEAD und Master
VonC

Pushen Sie einfach die Änderungen Ihres aktuellen Zweigs

git push origin

und es wird deinen Zweig schieben ‘B‘ ändert sich zu ‘origin/B‘.
Wenn Sie auf Ihrem sind master branch, git wird pushen origin/master.
Tatsächlich werden alle Änderungen auf die lokalen Branches übertragen, die über übereinstimmende Remote-Branches verfügen origin. Es wird durch die Konfigurationseinstellung gesteuert push.default.
Siehe auch Pushen von RefSpecs im Pro Git-Buch.


Was Sie sehen, ist die Seitenleiste, die alle Refspecs Ihres Remote-Repos in der darstellt Experimenteller GitX-Fork des GitX-Projekt.

Alt-Text

Der HEAD wird den Standard-Zweig für diese Fernbedienung festlegen.
Sehen git remote set-head Manpage:

Es ist nicht erforderlich, einen Standardzweig für eine entfernte Stelle zu haben, ermöglicht aber, dass der Name der entfernten Stelle anstelle eines bestimmten Zweigs angegeben wird.
Wenn beispielsweise der Standardzweig für origin ist eingestellt auf masterdann origin kann dort angegeben werden, wo Sie normalerweise angeben würden origin/master.

.

758940cookie-checkUnterschied zwischen HEAD und Master

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy