Kako dobiti trenutni naziv podružnice u Gitu?

Ja sam iz Subversion pozadine i kad sam imao granu, znao sam na čemu radim s "Ove radne datoteke ukazuju na ovu nit."

Ali s Git-om, nisam siguran kada sam uređivao datoteku u NetBeans ili Notepad ++, bez obzira na to je li priključena na master ili drugu granu.

Nema problema s git u bash-u, to mi govori što radim.

1912
05 июня '11 в 23:13 2011-06-05 23:13 postavio korisnik mike628, lipanj 05 '11 u 23:13 2011-06-05 23:13
@ 36 odgovora
  • 1
  • 2
 git branch 

mora prikazati sve lokalne ogranke vašeg repoa. Označena grana je vaša trenutna podružnica.

Ako želite samo ime podružnice u kojoj se nalazite, možete to učiniti:

 git branch | grep \* | cut -d ' ' -f2 
1499
05 июня '11 в 23:17 2011-06-05 23:17 odgovor je dat roberttdev Lipanj 05 '11 u 23:17 2011-06-05 23:17

Da biste prikazali trenutnu granu u kojoj se nalazite, bez ostalih navedenih popisa, možete učiniti sljedeće:

 git rev-parse --abbrev-ref HEAD 
border=0

veza:

3936
27 авг. odgovor je dao Jistanidiot 27 aug. 2012-08-27 15:33 '12 u 15:33 2012-08-27 15:33

Također imate git symbolic-ref HEAD , koji prikazuje puni refspec.

Da biste prikazali samo ime podružnice u Git v1.8 i novijim verzijama (zahvaljujući Gregu za isticanje):

 $ git symbolic-ref --short HEAD 

U Git v1.7 + možete:

 $ git rev-parse --abbrev-ref HEAD 

Oba moraju navesti isti naziv grane ako ste na grani. Ako ste u odvojenoj glavi, odgovori su različiti.

Napomena:

Na ranijem klijentu radi:

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

- Darien 26. ožujka 2014

440
08 авг. odgovor je dan Wernight 08 aug. 2012-08-08 18:55 '12 u 18:55 2012-08-08 18:55

Za moju vlastitu referencu (ali to može biti korisno i za druge) izvršio sam pregled većine (osnovnih naredbenih) tehnika spomenutih u ovoj niti, od kojih se svaka primjenjuje na nekoliko slučajeva korištenja: HEAD je (označava):

  • lokalni odjel (glavni)
  • grana za daljinsko praćenje sinkronizirano s lokalnom granom (podrijetlo / master na istoj predaji kao glavnoj)
  • udaljeni zapis nije sinkroniziran s lokalnom granom (izvor / značajka-foo)
  • oznaka (v1.2.3)
  • podmodul (izvoditi u direktoriju podmodula)
  • ukupna odsječena glava (ništa od gore navedenog)

rezultati:

  • git branch | sed -n '/\*/s///p'
    • terenski ured: master
    • grana za daljinsko praćenje (sinkrono): (detached from origin/master)
    • grana za daljinsko praćenje (nije sinkronizirana): (detached from origin/feature-foo)
    • oznaka: (detached from v1.2.3)
    • podmodul: '(GLAVA je prekinuta na 285f294)
    • ukupna (detached from 285f294) glave: (detached from 285f294)
  • git status | head -1
    • Lokalni ured: # On branch master
    • grana za daljinsko praćenje (sinkrono): # HEAD detached at origin/master računalu
    • grana za daljinsko praćenje (nije sinkronizirana): # HEAD detached at origin/feature-foo
    • tag: # HEAD detached at v1.2.3
    • podmodul: # HEAD detached at 285f294
    • ukupno glava odvojena: # HEAD detached at 285f294
  • git describe --all
    • Lokalni ured: heads/master
    • grana za daljinsko praćenje (sinkrono): heads/master (napomena: ne remotes/origin/master )
    • grana za daljinsko praćenje (nije sinkronizirana): remotes/origin/feature-foo
    • Oznaka: v1.2.3
    • podmodul: remotes/origin/HEAD
    • zajednička odsječena glava: v1.0.6-5-g2393761
  • cat.git/HEAD :
    • Lokalni ured: ref: refs/heads/master
    • submodule: cat:.git/HEAD: Not a directory
    • svi ostali slučajevi uporabe: SHA podudaranja urezivanje
  • git rev-parse --abbrev-ref HEAD
    • terenski ured: master
    • svi ostali slučajevi uporabe: HEAD
  • git symbolic-ref --short HEAD
    • terenski ured: master
    • svi drugi slučajevi upotrebe: fatal: ref HEAD is not a symbolic ref

(Za vašu informaciju, to je učinjeno pomoću git verzije 1.8.3.1)

190
25 окт. odgovor Stefaana 25. listopada. 2013-10-25 11:53 '13 u 11:53 2013-10-25 11:53

Druga alternativa:

 git name-rev --name-only HEAD 
124
02 нояб. odgovor je dao Filip Spiridonov 02. studenog. 2015-11-02 22:17 '15 u 22:17 sati 2015-11-02 22:17

Dovoljno dobro, dobio sam ga u jednom sloju (bash)

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

(kredit: ograničena naknada)

I dok sam tamo, jedan liner za daljinsko praćenje (ako ga ima)

 git rev-parse --symbolic-full-name --abbrev-ref @{u} 
89
04 апр. Odgovor je dao Olivier Refalo 04. travnja. 2012-04-04 18:20 '12 u 6:20 pm 2012-04-04 18:20

Jednostavno možete unijeti komandnu liniju (konzolu) u Linuxu u direktoriju spremišta:

 $ git status 

i vidjet ćete tekst, među kojima je nešto slično:

 ... On branch master ... 

što znači da ste na master grani. Ako u ovom trenutku uređujete datoteku i nalazite se u istom lokalnom spremištu (lokalni direktorij s datotekama koje se nalaze u Git kontroli verzija), uređujete datoteku u ovoj niti.

57
05 июня '11 в 23:31 2011-06-05 23:31 odgovor je dao Tadeck 05. lipnja 2011. u 23:31 2011-06-05 23:31
 git symbolic-ref -q --short HEAD 

Koristim ga u skriptama koje trebaju trenutno ime podružnice. Pokazat će vam trenutnu kratku simboličku vezu s HEAD, koja će biti vaš trenutni naziv grane.

26
03 окт. Odgovori Kousha 03 oct. 2013-10-03 01:09 '13 u 1:09 2013-10-03 01:09
 git branch | grep -e "^*" | cut -d' ' -f 2 

prikazat će se samo ime podružnice

24
14 июня '16 в 16:08 2016-06-14 16:08 odgovor je dat ungalcrys 14. lipnja '16 u 16:08 2016-06-14 16:08

Pronašli smo rješenje naredbenog retka iste duljine kao i Oliver Refalo koristeći dobar olwk :

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

awk glasi da "radi stvari u {} u redovima koji odgovaraju regularnom izrazu". Prema zadanim postavkama, prihvaća polja razgraničena s razmacima, tako da upišete drugi. Ako možete pretpostaviti da samo linija s vašom granom ima *, možete resetirati ^. Ah, bash golf!

21
20 февр. Odgovori Silas Barta 20. veljače. 2014-02-20 01:50 '14 u 1:50 2014-02-20 01:50

git branch prikazuje samo trenutno ime grane.

Iako će git grane prikazati sve grane i označiti zvjezdicu zvjezdicom, to može biti previše glomazno kada se radi s velikim brojem grana.

Da biste prikazali samo granu u kojoj se nalazite, upotrijebite:

 git rev-parse --abbrev-ref HEAD 
20
25 мая '18 в 8:33 2018-05-25 08:33 odgovor je dao Lawrence Paje 25. svibnja u 8:33 ujutro 2018-05-25 08:33
 #!/bin/bash function git.branch { br=`git branch | grep "*"` echo ${br/* /} } git.branch 
17
23 янв. Odgovor je dat Dziamid 23. siječnja. 2012-01-23 20:11 '12 u 20:11 2012-01-23 20:11

Zašto ne koristiti git -aware prompt ljuske, koji će vam reći ime trenutne grane? git status također pomaže.


Kao contrib/ git-prompt.sh (git verzija 2.3.0), kako je definirano u pomoćnoj funkciji __git_ps1

  • Prvo, postoji poseban slučaj, ako je otkriven rebasing. Git koristi neimenovanu granu (odvojenu HEAD) tijekom procesa preusmjeravanja da bi bio atomski, a izvorna grana se zadržava negdje drugdje.

  • Ako je .git/HEAD datoteka simbolička veza (vrlo rijedak slučaj iz drevne Git povijesti), ona koristi git symbolic-ref HEAD 2>/dev/null

  • Inače, on čita .git/HEAD datoteku. Sljedeći koraci ovise o njegovom sadržaju:

    • Ako ova datoteka ne postoji, ne postoji trenutna grana. To se obično događa ako je spremište prazno.

    • Ako počne s prefiksom 'ref: ' , onda je .git/HEAD symref (simbolička veza), a mi smo na normalnoj grani. Uklonite ovaj prefiks da biste dobili puno ime i podijelite refs/heads/ u kratko ime trenutne grane:

       b="${head#ref: }" # ... b=${b##refs/heads/} 
    • Ako ne počinje s 'ref: ' , onda je onemogućen pomoću HEAD (anonimna grana), što ukazuje na izravnu fiksaciju. Upotrijebite git describe ... za pisanje trenutnog urezivanja u čitljivom obliku.

Nadam se da ovo pomaže.

15
06 июня '11 в 1:25 2011-06-06 01:25 odgovor je dao Jakub Narębski 6. lipnja 2011. u 1:25 2011-06-06 01:25

Git bash možete koristiti u radnom direktoriju, a naredba je sljedeća.

 git status -b 

on će vam reći na kojoj ste grani tu su mnoge korisne naredbe, od kojih su neke

 -s 

- short Dajte izlaz u kratkom formatu.

-b --branch Prikaz podataka o granama i praćenju čak iu kratkom formatu.

- porcelain [=] Dajte rezultat u formatu skripte koji se lako raščlanjuje. Ovo izgleda kao kratak izlaz, ali će ostati stabilno u git verzijama i bez obzira na korisničku konfiguraciju. U nastavku pogledajte pojedinosti.

Parametar inačice koristi se za određivanje verzije formata. Ovo je opcionalno i zadani je format izvorna verzija v1.

- long Dajte rezultat u dugom formatu. To je zadana vrijednost.

-v - details Osim naziva datoteka koje su promijenjene, prikazane su i promjene teksta koje su postavljene na urezivanje (tj. kako je izlaz git diff - spremljen). Ako je -v dvaput specificirano, tada se prikazuju i promjene u radnom stablu koje još nisu isporučene (tj. Kao git diff izlaz).

14
08 дек. Odgovor je dat Prateek Gangwal 08 prosinca. 2016-12-08 15:19 '16 u 15:19 2016-12-08 15:19

Preporučujem da koristite bilo koju od ove dvije naredbe.

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

Ili isto

git status | sed -n 1p | cut -d' ' -f 3

ILI (više opširno)

git status -uno -bs| cut -d'#' -f 3 | cut -d. -f 1| sed -e 's/^[ \t]//1'| sed -n 1p

12
22 февр. odgovor od strane jackotonye 22. veljače. 2018-02-22 19:12 '18 u 19:12 sati 2018-02-22 19:12

S vremenom možemo imati jako dug popis podružnica.

Iako su neka druga rješenja sjajna, evo što radim (pojednostavljeno Jacobovim odgovorom):

 git branch | grep \* 

sada,

 git status 

samo ako postoje lokalne promjene

12
11 марта '14 в 23:41 2014-03-11 23:41 odgovor je dao karthikr 11. ožujka 2014. u 23:41 2014-03-11 23:41

Nažalost, ovo je još jedan odgovor naredbenog retka, ali ovo je ono što sam tražio kada sam pronašao ovo pitanje, a mnogi od tih odgovora bili su korisni. Moje rješenje je sljedeća bash shell funkcija:

 get_branch () { git rev-parse --abbrev-ref HEAD | grep -v HEAD || \ git describe --exact-match HEAD 2> /dev/null || \ git rev-parse HEAD } 

To bi mi uvijek trebalo dati nešto čitljivo i izravno koristiti git checkout kao argument.

  • u lokalnoj podružnici: feature/HS-0001
  • po označenom v3.29.5 (prekinuto): v3.29.5
  • na udaljenoj grani (odspojen, nije označen): SHA1
  • za bilo koji drugi zasebni popravak: SHA1
12
08 апр. odgovor je dat dmaestro12 08 apr. 2016-04-08 19:06 '16 u 19:06 2016-04-08 19:06

U Netbeansu provjerite jesu li omogućene napomene verzije (Prikaz → Prikaži oznake verzije). Zatim možete vidjeti naziv grane pored naziva projekta.

http://netbeans.org/bugzilla/show_bug.cgi?id=213582

11
09 авг. odgovor je dan Saroj 09 aug. 2012-08-09 19:10 '12 at 7:10 pm 2012-08-09 19:10

Manje bučna verzija za status git će vam pomoći

 git status -bsuno 

Ispisuje se

 ## branch-name 
11
22 марта '18 в 2:55 2018-03-22 02:55 odgovor je dgolovin 22. ožujka u 2:55 2018-03-22 02:55

Imam jednostavnu skriptu pod nazivom git-cbr (trenutna grana) koja ispisuje trenutno ime podružnice.

 #!/bin/bash git branch | grep -e "^*" 

Skriptu sam stavio u korisničku mapu ( ~/.bin ). Mapa je u $PATH .

Dakle, sad kad sam u git repozitoriju, samo upišite git cbr za ispis trenutnog imena grane.

 $ git cbr * master 

To radi jer naredba git uzima svoj prvi argument i pokušava pokrenuti skriptu pod nazivom git-arg1 . Na primjer, git branch pokušava pokrenuti skriptu pod nazivom git-branch , itd.

10
03 мая '16 в 20:47 2016-05-03 20:47 odgovor je dao Diego Pino 03. svibnja '16 u 20:47 2016-05-03 20:47

Što misliš o ovome?

 { git symbolic-ref HEAD 2> /dev/null || git rev-parse --short HEAD 2> /dev/null } | sed "s#refs/heads/##" 
10
11 апр. Odgovor dao ShogunPanda 11. travnja 2013-04-11 20:29 '13 u 20:29 2013-04-11 20:29

Sljedeća naredba ljuske govori podružnici u kojoj se nalazite.

 git branch | grep ^\* 

Ako ne želite unijeti ovu dugačku naredbu svaki put kada želite naučiti granu, i koristiti Bash, dajte naredbi kratki pseudonim, na primjer, cb alias, na primjer.

 alias cb='git branch | grep ^\*' 

Kada se nalazite u glavnoj grani i svom promptu $ , dobit ćete * master kako slijedi.

 $ cb * master 
9
17 нояб. odgovor je dao mrrusof 17. studenog 2016-11-17 00:19 '16 u 0:19 2016-11-17 00:19

Možete trajno prilagoditi svoj bash izlaz za prikaz vašeg git -branch imena. To je vrlo prikladno kada radite s različitim granama, ne morate stalno upisivati $ git status . Github repo git -aware-prompt .

Otvorite terminal (ctrl-alt-t) i unesite naredbe

 mkdir ~/.bash cd ~/.bash git clone git://github.com/jimeh/git-aware-prompt.git 

Promijenite svoj .bashrc sa sudo nano ~/.bashrc (za Ubuntu) i dodajte sljedeće na vrhu:

 export GITAWAREPROMPT=~/.bash/git-aware-prompt source "${GITAWAREPROMPT}/main.sh" 

Zatim zalijepite kôd

 export PS1="\${debian_chroot:+(\$debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\] \[$txtcyn\]\$git_branch\[$txtred\]\$git_dirty\[$txtrst\]\$ " 

Na kraju iste datoteke ranije ste umetnuli instalacijski kod. To će vam dati rezultat u boji: 2019

14 окт. odgovor je dao Kirill Zhuravlov 14. listopada. 2016-10-14 19:13 '16 u 19:13 2016-10-14 19:13

Ako doista želite da se posljednja grana / oznaka iskrca u odvojenom HEAD stanju.

 git reflog HEAD | grep 'checkout:' | head -1 | rev | cut -d' ' -f1 | rev 

Ažuriraj Bolje je ako se i ne bojiš awk.

 git reflog HEAD | grep 'checkout:' | head -1 | awk '{print $NF}' 
7
20 авг. odgovor je dat Ryan 20 aug. 2014-08-20 08:40 '14 u 8:40 2014-08-20 08:40

Vraća ime podružnice ili SHA1, kada je na zasebnoj glavi:

 git rev-parse --abbrev-ref HEAD | grep -v ^HEAD$ || git rev-parse HEAD 

Ovo je kratka verzija odgovora @ dmaestro12 i bez podrške za oznake.

6
17 окт. odgovor je dan korisniku 17 okt. 2017-10-17 23:30 '17 u 23:30 sati 2017-10-17 23:30

Znam da je kasno, ali na linux / mac, s terminala možete koristiti sljedeće.

 git status | sed -n 1p 

Objašnjenje:

git status → dobiva status radnog stabla
sed -n 1p → dobiva prvi redak iz statusnog tijela

Odgovor na gornju naredbu bit će sljedeći:

 "On branch your_branch_name" 
5
21 авг. odgovor dati skippy 21 kol. 2014-08-21 01:41 '14 u 1:41 2014-08-21 01:41
 git status 

također daje naziv podružnice zajedno s promjenama.

na primjer

 >git status On branch master // <-- branch name here ..... 
5
13 янв. odgovor je dao Satheesh Kumar 13. siječnja 2018-01-13 05:15 '18 u 5:15 am 2018-01-13 05:15

Dodajte ga u PS1 pomoću Mac računala:

 PS1='\W@\u >`[ -d .git ]  git branch | grep ^*|cut -d" " -f2`> $ ' 

Prije izvođenja naredbe:

2019

31 окт. Odgovor koji je dao Abdennour TOUMI 31. listopada 2016-10-31 09:56 '16 u 9:56 2016-10-31 09:56

Također možete koristiti varijablu GIT_BRANCH, kao što je prikazano ovdje: https://wiki.jenkins-ci.org/display/JENKINS/Git+Plugin

Git plugin postavlja nekoliko varijabli okruženja koje možete koristiti u svojim skriptama:

GIT_COMMIT - struja SHA

GIT_BRANCH - naziv korištene grane, na primjer. "master" ili "origin / foo"

GIT_PREVIOUS_COMMIT - SHA prethodnog ugrađenog urezivanja iz iste grane (trenutni SHA kada je prvi put izgrađen u grani)

GIT_URL - URL udaljenog spremišta

GIT_URL_N - udaljeni repozitorij URL-a kada postoji više od jednog daljinskog upravljača, na primjer. GIT_URL_1, GIT_URL_2

GIT_AUTHOR_EMAIL - E-pošta pošiljatelja / autora

GIT_COMMITTER_EMAIL - poruka izdavača / autora

4
11 марта '14 в 12:08 2014-03-11 12:08 odgovor je dao korisnik3405314 11. ožujka 2014. u 12:08 2014-03-11 12:08
 git branch | grep "*" | sed "s/* //" | awk '{printf $0}' | pbcopy 

Izravna kopija rezultata u karton. Zahvaljujući @ olivier-refalo za početak ...

2
26 апр. odgovor dao SushiGrass Jacob 26 travnja. 2013-04-26 22:55 '13 u 22:55 2013-04-26 22:55
  • 1
  • 2

Ostala pitanja o ili postavljanju pitanja