2013-03-07 11 views
8

Ich bin auf der Suche nach dem, was ich hoffe, ist die einfache Zeile Befehl, um die richtige upstream Ref für den aktuell ausgecheckt Zweig zu bestimmen?Befehl zur Bestimmung der Upstream-Ref des aktuellen HEAD?

Wesentlichen so etwas wie

git branch --remote HEAD

, die (wenn es funktioniert) würde die symbolischen Muster HEAD auf den aktuellen Zweig Namen konvertieren und dann die Option --remote ändert es dann auf die ref des Fern -Tracking-Zweig. (Aber es macht das nicht!)

Wenn ich Zweig haben morehelp mit einer Config von

remote = origin 
merge = refs/heads/morehelp 

Die einfache Befehlszeile refs/remotes/origin/morehelp zurückkehren würde, die es Upstream-Tracking-Zweig ist (ideal für den git reset --hard <ref> Fall ein Update durch Überschreiben)

Antwort

13

ich glaube, Sie

git rev-parse --symbolic-full-name @{u} 

@{u} wollen ist die Abkürzung für den Upstream-Verfolgungszweig von HEAD und die Option rev-parse, es in dem von Ihnen gewünschten Format zu drucken, anstatt eine SHA-Commit-ID zu drucken.

Von git help rev-parse

--symbolic 
     Usually the object names are output in SHA1 form (with possible^prefix); this option makes them output in a form as close to the original 
     input as possible. 

    --symbolic-full-name 
     This is similar to --symbolic, but it omits input that are not refs (i.e. branch or tag names; or more explicitly disambiguating 
     "heads/master" form, when you want to name the "master" branch when there is an unfortunately named tag "master"), and show them as full 
     refnames (e.g. "refs/heads/master"). 
+0

, die das Geschäft sieht. Ich dachte, ich wäre früher dran gewesen, aber ich versuchte 'git rev-parse --symbolic-full-name HEAD' mit einer Remote-Option, die nicht funktionierte. Es fühlt sich an wie etwas, das offensichtlicher sein sollte. (sogar das '@ {u}' mit seinem Kommentar "Ein fehlender Verweis ist standardmäßig der aktuelle Zweig.). –

+2

_" Es fühlt sich an wie etwas, das offensichtlicher sein sollte. "_ aber das ist Git, all die wirklich nützlichen Befehle sind sehr naheliegend;) –

+0

+100 (b ;-) dafür. Ich hatte darüber nachgedacht, ein '--zu-usptream' zu' git reset --hard 'für meinen Reset auf den Fall upstream hinzuzufügen, wenn ich passiere einer meiner privaten Entwicklungszweige zwischen Rechnern über meinen Github Repo. Jetzt kann ich mit deinem One-Liner einen Alias ​​erstellen. –

Verwandte Themen