Frage Wie bekomme ich den aktuellen Zweignamen in Git?


Ich bin von einem Subversion-Hintergrund und, als ich einen Zweig hatte, wusste ich, woran ich arbeitete "Diese Arbeitsdateien zeigen auf diesen Zweig".

Aber mit Git bin ich nicht sicher, wenn ich eine Datei in NetBeans oder Notepad ++ bearbeite, ob es mit dem Master oder einem anderen Zweig verbunden ist.

Es gibt kein Problem mit git Im Grunde sagt es mir, was ich tue.


1711
2018-06-05 20:13


Ursprung


Antworten:


git branch

sollte alle lokalen Zweige Ihres Repos anzeigen. Der markierte Zweig ist Ihr aktueller Zweig.


1295
2018-06-05 20:17



git rev-parse --abbrev-ref HEAD

Dadurch wird der aktuelle Zweig angezeigt.

Referenz:


3636
2017-08-27 12:33



Du hast auch git symbolic-ref HEAD welches die volle refspec anzeigt.

Um nur den Verzweigungsnamen in Git v1.8 und später anzuzeigen (danke an Greg, dass er darauf hingewiesen hat):

$ git symbolic-ref --short HEAD

Auf Git v1.7 + können Sie auch tun:

$ git rev-parse --abbrev-ref HEAD

Beide sollten denselben Zweignamen haben, wenn Sie in einer Zweigstelle sind. Wenn Sie auf einem distanzierten Kopf sind, unterscheiden sich die Antworten.

Hinweis:

Auf einem früheren Client scheint dies zu funktionieren:

$ git symbolic-ref HEAD | sed -e "s/^refs\/heads\///"

- Darien 26. März 2014


399
2017-08-08 15:55



Für meinen eigenen Hinweis (aber es könnte für andere nützlich sein) habe ich einen Überblick über die meisten (grundlegenden Befehlszeilen-) Techniken, die in diesem Thread erwähnt werden, gemacht, die jeweils auf mehrere Anwendungsfälle angewendet werden: HEAD is (zeigt auf):

  • lokaler Zweig (Master)
  • Remote-Tracking-Zweig, synchron zum lokalen Zweig (Ursprung / Master bei gleichem Commit wie Master)
  • Remote-Tracking-Zweig, nicht synchron mit einem lokalen Zweig (Ursprung / Merkmal-foo)
  • tag (v1.2.3)
  • allgemeiner distanzierter Kopf (keiner der oben genannten)

Ergebnisse:

  • git branch | sed -n '/\* /s///p'
    • Lokale Niederlassung: master
    • Remote-Tracking-Zweig (synchron): (detached from origin/master)
    • Remote-Tracking-Zweig (nicht synchron): (detached from origin/feature-foo)
    • Etikett: (detached from v1.2.3)
    • allgemeiner distanzierter Kopf: (detached from 285f294)
  • git status | head -1
    • Lokale Niederlassung: # On branch master
    • Remote-Tracking-Zweig (synchron): # HEAD detached at origin/master
    • Remote-Tracking-Zweig (nicht synchron): # HEAD detached at origin/feature-foo
    • Etikett: # HEAD detached at v1.2.3
    • allgemeiner distanzierter Kopf: # HEAD detached at 285f294
  • git describe --all
    • Lokale Niederlassung: heads/master
    • Remote-Tracking-Zweig (synchron): heads/master (Hinweis: nicht  remotes/origin/master)
    • Remote-Tracking-Zweig (nicht synchron): remotes/origin/feature-foo
    • Etikett: v1.2.3
    • allgemeiner distanzierter Kopf: v1.0.6-5-g2393761
  • cat .git/HEAD:
    • Lokale Niederlassung: ref: refs/heads/master
    • alle anderen Anwendungsfälle: SHA des entsprechenden Commit
  • git rev-parse --abbrev-ref HEAD
    • Lokale Niederlassung: master
    • all die anderen Anwendungsfälle: HEAD
  • git symbolic-ref --short HEAD
    • Lokale Niederlassung: master
    • all die anderen Anwendungsfälle: fatal: ref HEAD is not a symbolic ref

(Zur Info: Dies wurde mit Git Version 1.8.3.1 gemacht)


167
2017-10-25 08:53



Eine weitere Alternative:

git name-rev --name-only HEAD

118
2017-11-02 19:17



Nun, einfach genug, ich habe es in einem einzigen Liner (bash)

git branch | sed -n '/\* /s///p'

(Kredit: Begrenzte Versöhnung)

Und während ich dort bin, der eine Liner, um die Remote-Tracking-Zweig (falls vorhanden) zu bekommen

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

87
2018-04-04 15:20



Sie können einfach die Befehlszeile (Konsole) unter Linux im Repository-Verzeichnis eingeben:

$ git status

und Sie werden einen Text sehen, unter dem etwas Ähnliches ist:

...
On branch master
...

was bedeutet, dass du gerade aktiv bist master Ast. Wenn Sie zu diesem Zeitpunkt eine Datei bearbeiten und sie sich im selben lokalen Repository befindet (lokales Verzeichnis mit den Dateien, die unter Git Versionsverwaltungsverwaltung stehen), bearbeiten Sie die Datei in diesem Zweig.


48
2018-06-05 20:31



git symbolic-ref -q --short HEAD

Ich benutze dies in Skripten, die den aktuellen Zweignamen benötigen. Es zeigt Ihnen den aktuellen kurzen symbolischen Verweis auf HEAD, der Ihr aktueller Zweigname ist.


26
2017-10-02 22:09



git branch | grep -e "^*" | cut -d' ' -f 2

zeigt nur den Zweignamen an


24
2018-06-14 13:08



Gefunden eine Befehlszeilenlösung von der gleichen Länge wie Oliver Refalos, mit guten ol 'awk:

git branch | awk '/^\*/{print $2}'

awk liest das als "Mach das Zeug in {} in Zeilen, die mit der Regex übereinstimmen. "Standardmäßig werden Felder mit Leerzeichen verwendet, also drucken Sie die zweite. Wenn Sie annehmen können, dass nur die Zeile mit Ihrem Zweig das * hat, können Sie die ^ fallen lassen. Ah, bash golf!


21
2018-02-19 22:50



#!/bin/bash
function git.branch {
  br=`git branch | grep "*"`
  echo ${br/* /}
}
git.branch

16
2018-01-23 17:11