Git-Pull-Ursprung HEAD

Lesezeit: 3 Minuten

Mir wurde beigebracht, dass Sie zu einem entfernten Zweig, der mit dem Namen Ihres aktuellen Git-Zweigs übereinstimmt, pushen und von ihm ziehen können, indem Sie Folgendes tun:

git push origin HEAD

oder

git pull origin HEAD

Es hat bei mir vorher immer funktioniert, aber seltsamerweise funktioniert es manchmal nicht, sondern verschiebt sich auf das Drücken / Ziehen von der Meister branch stattdessen (was beim Pullen eine Zusammenführung verursacht … nicht das, was ich tun möchte). Ich weiß, dass Sie leicht von der Verzweigung, auf der Sie sich befinden, Push/Pull durchführen können, indem Sie einfach den Namen der Verzweigung wie folgt verwenden:

git pull origin name-of-branch-i-want-to-pull-from

Wie auch immer:

  1. Gibt es einen Grund dafür, dass der HEAD den Überblick verliert/nicht auf meinen aktuellen Zweig zeigt, wie es fast immer der Fall ist?
  2. Gibt es eine Möglichkeit, zu dem Zweig zu pushen/zu ziehen, an dem ich gerade arbeite (solange der Name des entfernten Zweigs übereinstimmt), ohne den Zweig explizit im Befehl zu benennen?

Die Sache ist, wenn Sie Folgendes tun:

git push origin HEAD

HEAD hier bedeutet der Standard-Zweig auf Ihrem lokal Repository.

Wenn Sie jedoch Folgendes tun:

git pull origin HEAD

HEAD hier bedeutet der Standard-Zweig auf Ihrem Fernbedienung Repository.

Diese 2 HEADs können den gleichen Zweignamen haben, aber sehr oft sind sie unterschiedlich.

Wenn beispielsweise der Standardzweig Ihres lokalen Repositorys und Ihres Remote-Repositorys beides sind masterdann sind Sie in eine neue Filiale gewechselt feature im lokalen Repository und dann per Doing auf Remote verschoben git push origin HEADder Standardzweig auf der Fernbedienung wird nicht geändert feature magisch. Stattdessen bleibt es bei master. An diesem Punkt, wenn Sie dies tun git pull origin HEAD auf Ihrem Feature-Zweig tun Sie tatsächlich git pull origin master.

Daher würde ich vorschlagen, dies zu vermeiden git pull origin HEADweil es nicht offensichtlich ist, was der Standardzweig auf der Fernbedienung ist, und unerwartete Probleme verursachen kann.

Benutzer-Avatar
Rican7

Dank ernsthafter Hilfe von @abackstrom konnte ich mein Problem beheben. Im Wesentlichen war dieser Beitrag mein Problem und meine Lösung:

Git-Zweig namens origin/HEAD -> origin/master

Der genaue Befehl zum korrekten “Neuerstellen”/Verfolgen eines lokalen HEAD-Zweigs/Zeigers lautete:

git remote set-head origin -a

Ich hoffe, das hilft allen anderen, die auf dieses Problem stoßen.

HEAD ist nicht wirklich ein Zweig. Es ist ein Zeiger auf das Commit, das Sie gerade ausgecheckt haben, und wird oft auf einen Zweig verweisen, aber wenn Sie so etwas tun git checkout <sha> oder git checkout <tag>dann verweist HEAD direkt auf einen Commit, ohne Bindung an einen Zweig – dies wird als “getrennter HEAD” -Zustand bezeichnet, und Sie sollten normalerweise eine Warnung erhalten git checkout wenn Sie in einen solchen Zustand eintreten. In diesem Zustand macht der Versuch, HEAD zu drücken/ziehen, keinen Sinn, da Sie sich nicht auf einem Zweig befinden.

  • Ja, das macht absolut Sinn, denn dann verfolgen Sie einen Nicht-Zweig, aber das ist nicht das, was hier passiert. Stattdessen verfolge ich gerade einen Zweig (z. B. mit dem Titel „Patch“), übertrage ihn und dann: git push origin HEAD und es schiebt zum Ursprung/Master. Es passiert auch beim Ziehen. Seltsam.

    – Rican7

    21. September 2012 um 18:06 Uhr

1216780cookie-checkGit-Pull-Ursprung HEAD

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

Privacy policy