475 Stimmen

Nur den aktuellen Zweig in Git anzeigen

Ich habe versucht, einen speziellen Git-Befehl dafür zu finden, aber ich konnte keinen finden. Gibt es etwas Kürzeres oder Schnelleres als den folgenden Befehl?

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

1 Stimmen

Ich denke, dass dies der schnellste Weg ist, um den aktuellen Zweig zu erhalten.

3 Stimmen

0 Stimmen

@ChandrayyaGK: Nein, denn die andere Frage bezieht sich auf die Ausführung innerhalb Ihrer IDE. (Viele der Antworten beziehen sich auf die Verwendung der Kommandozeile, es lohnt sich also, einen Blick darauf zu werfen, aber es ist kein richtiges Duplikat, und diese Antworten sollten vielleicht stattdessen hierher migriert werden, wenn es welche gibt, die einen bedeutenden Mehrwert zu dem haben, was hier bereits steht).

824voto

earl Punkte 37791
$ git rev-parse --abbrev-ref HEAD
master

Dies sollte mit Git 1.6.3 oder einer neueren Version funktionieren.

2 Stimmen

Funktioniert bei mir auch nicht, mit git-1.6.2.5. git rev-parse --abbrev-ref HEAD => --abbrev-ref 311172491a9a667f9321bdf1c4fe5e22cc6e2c08 (d.h. rev-parse akzeptiert --abbrev-ref nicht (steht auch nicht in der Man Page))

1 Stimmen

JasonWoof, funktioniert bei mir in 1.6.4.2, muss im Changelog nachsehen, wann genau das passiert ist ;-)

10 Stimmen

Soweit ich den Git-Logs entnehmen kann, wurde diese Funktion am 20.04.2009 zusammengeführt und mit Version 1.6.3 veröffentlicht.

206voto

VonC Punkte 1117238

Mit Git 2.22 (Q2 2019) werden Sie einen einfacheren Ansatz haben: git branch --show-current .

Siehe 0ecb1fc übertragen (25. Okt. 2018) von Daniels Umanovskis ( umanovskis ) .
(Zusammengefasst von Junio C. Hamano -- gitster -- en 3710f60 festlegen , 07. März 2019)

branch : einführen --show-current Anzeigeoption

Beim Aufruf mit --show-current , git branch druckt die aktuelle Zweignamen aus und beendet sich.
Es wird nur der eigentliche Name gedruckt, ohne refs/heads .
Im abgetrennten HEAD-Zustand wird nichts ausgegeben.

Sowohl für die Skripterstellung als auch für die interaktive/informative Nutzung vorgesehen.
Anders als git branch --list ist keine Filterung erforderlich, um einfach die Zweignamen zu erhalten.

Siehe die ursprüngliche Diskussion auf der Git-Mailingliste im Okt. 2018 und die tatsächlicher Patch .


Warnung: wie erwähnt in den Kommentaren von Olivier :

Das funktioniert nicht in jeder Situation!
Wenn Sie sich zum Beispiel in einer Submodul funktioniert es nicht.
' git symbolic-ref --short HEAD ' funktioniert immer.

26 Stimmen

Endlich ist etwas hinzugekommen, was eigentlich von Anfang an hätte dabei sein sollen!

0 Stimmen

Achtung, das funktioniert nicht in jeder Situation! Wenn Sie sich zum Beispiel in einem Submodul befinden, funktioniert es no Arbeit. 'git symbolic-ref --short HEAD' funktioniert immer

0 Stimmen

@Olivier Gutes Argument, merci beaucoup. Ich habe Ihren Kommentar in die Antwort aufgenommen, um ihn besser sichtbar zu machen.

165voto

dieresys Punkte 1811

In Git 1.8.1 können Sie die git symbolic-ref Befehl mit der Option "--short":

$ git symbolic-ref HEAD
refs/heads/develop
$ git symbolic-ref --short HEAD
develop

10 Stimmen

Besser als die akzeptierte Antwort IMO, weil es auf Repos ohne Commits funktioniert

5 Stimmen

Sie erhalten die Fehlermeldung fatal: ref HEAD is not a symbolic ref wenn dies als Teil eines TravisCI-Builds ausgeführt wird

0 Stimmen

Scheint in GIT 1.9.1 nicht zu funktionieren ``` git version 1.9.1 fatal: ref HEAD is not a symbolic ref ```

30voto

Vielleicht interessiert Sie die Ausgabe von

git symbolic-ref HEAD

Je nach Ihren Bedürfnissen und Ihrem Layout können Sie insbesondere Folgendes tun

basename $(git symbolic-ref HEAD)

ou

git symbolic-ref HEAD | cut -d/ -f3-

und dann ist da noch die .git/HEAD die auch für Sie von Interesse sein könnte.

2 Stimmen

Sie können kürzen git rev-parse --symbolic-full-name a git symbolic-ref .

2 Stimmen

Sie brauchen nicht zu verwenden basename o cut ; Verwendung BR=${BR#refs/heads/} (wobei BR der Name der Variablen ist, deren Ausgabe Sie gespeichert haben git symbolic-ref HEAD ).

0 Stimmen

Jakub, natürlich nicht, vorausgesetzt, Sie haben die Ausgabe in einer Variablen.

18voto

theruss Punkte 1540

Soweit ich weiß, gibt es keine Möglichkeit, nur den aktuellen Zweig in Git anzuzeigen, also habe ich verwendet:

git branch | grep '*'

5 Stimmen

Das funktioniert zwar mit GNU coreutils, grep '*' ist nominell ein Syntaxfehler. Sie wollen wahrscheinlich git branch | sed -n 's/^\* //p' sowieso. Oder eigentlich das, was der Auftraggeber überhaupt gepostet hat, was auf das Gleiche hinausläuft.

1 Stimmen

@tripleee können Sie mich darüber aufklären, warum grep '*' nominell ein Syntaxfehler ist?

0 Stimmen

Genau wie der Plural s hat im Englischen keine sinnvolle Bedeutung für sich allein, man kann nicht "zero or more times" ohne etwas davor sagen. (Ich dachte, ich hätte mich daran erinnert, dass die GNU grep In der Dokumentation wird ausdrücklich erwähnt, dass ein einsamer * am Anfang der Zeichenfolge wird wörtlich interpretiert, d. h. als [*] in der allgemeinen Regex, aber ich kann das jetzt nicht dokumentiert finden).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X