2012-09-27 3 views
41

Ich verstehe nicht die zweite Zeile in der Ausgabe git branch -l -a: remotes/origin/HEAD -> origin/master.Warum gibt es in meiner `git branch -l -a` Ausgabe einen` remotes/Herkunft/HEAD -> Herkunft/Master` Eintrag?

git branch -l -a 
* master 
    remotes/origin/HEAD -> origin/master 
    remotes/origin/master 

Ist das ein Rest von einem anderen Vorgang? Sollte ich es aufräumen? Und wie würde ich das tun?

Normalerweise arbeite ich mit git auf dem CLI, aber auf diesem lokalen Repository experimentierte ich mit TortoiseGit, um einen einfachen git-Workflow für einen Freund zu finden.

+1

mögliche Duplikate von [Warum wird "Herkunft/HEAD" angezeigt, wenn "git branch -r" ausgeführt wird?] (Http://stackoverflow.com/questions/354312/why-is-origin-head-shown-) when-running-git-branch-r) –

+0

Übrigens macht "-l" wahrscheinlich nicht das, was Sie wollen. Im Allgemeinen [es erstellt Reflog] (https://git-scm.com/docs/git-branch#git-branch--l), aber hier wird es wahrscheinlich einfach weggelassen. Um alle Zweige aufzulisten, genügt 'git branch -a'. – Palec

Antwort

28

Nein, keine Notwendigkeit zu bereinigen: Es ist der symbolische Zweig, auf den von Ihrem Remote-Repo verwiesen wird.
Wenn Sie Ihren Repo klonen, werden Sie standardmäßig auf die von remotes/origin/HEAD referenzierte Verzweigung verweisen.

Siehe auch:

+1

Thx für die knappe Antwort und die Links. Ich denke, ich war verwirrt, weil ich dieses Test-Repo mit einem anderen verglichen habe, das nicht die Referenz für Fernbedienungen/Ursprung/HEAD hatte. Das andere Repo war das ursprüngliche Repo, dass ich nach Github geschoben habe, daher wurde es nie geklont. Ist es richtig, dass dies (nicht geklont) der Grund dafür ist, dass es die HEAD-Referenz nicht enthält? – mistaecko

+1

@mistaecko ja, es ist richtig. – VonC

+4

Wenn Sie es entfernen möchten: 'git remote set-head Herkunft -d', nach http://stackoverflow.com/a/6838756. –

21

können Sie git remote set-head origin -d verwenden, um die origin/HEAD symbolischen ref zu löschen, oder git remote set-head origin -a die abfragen Remote und automatisch den origin/HEAD Zeiger auf den aktuellen Zweig der Fernbedienung.

Die origin/HEAD Referenz ist optional. Es fungiert nur als syntaktische Abkürzung: Wenn es existiert und auf origin/master zeigt, können Sie einfach origin verwenden, wo Sie sonst origin/master angeben würden.

Die git remote(1) Manpage beschreibt dies:

Set-Kopf

Setzt oder löscht den Standardzweig (dh das Ziel der symbolisch-ref refs/remotes // HEAD) für die benannte Fernbedienung. Eine Standard-Verzweigung für eine Fernbedienung ist nicht erforderlich, erlaubt aber den Namen der Fernbedienung anstelle einer bestimmten Verzweigung anzugeben. Beispiel: Wenn der Standardzweig für den Ursprung auf Master festgelegt ist, kann der Ursprung angegeben werden, wo immer Sie normalerweise Ursprung/Master angeben würden.

+0

ist es möglich, 'git branch -l -a' oder ähnliches aufzurufen und den HEAD und andere symbolische Refs herauszufiltern? –

+0

Sie könnten 'git branch --list -a | verwenden grep -v '->' –

+0

sicher, aber dieser Hack ist sehr unzuverlässig. wie man alle "Ausnahmen" kennt ... –