Pytanie Jak uzyskać aktualną nazwę oddziału w Git?
Pochodzę ze środowiska Subversion i kiedy miałem oddział, wiedziałem, nad czym pracuję, "Te pliki robocze wskazują na tę gałąź".
Ale z Git nie jestem pewien, kiedy edytuję plik w NetBeans lub Notepad ++, niezależnie od tego, czy jest on powiązany z masterem, czy z inną gałęzią.
Nie ma problemu z git
w bash mówi mi, co robię.
1718
2018-06-05 20:13
pochodzenie
Odpowiedzi:
git branch
powinien pokazać wszystkie lokalne oddziały twojego repo. Gwiezdna gałąź to Twoja obecna gałąź.
1298
2018-06-05 20:17
git rev-parse --abbrev-ref HEAD --
To wyświetli bieżącą gałąź.
Odniesienie:
3643
2017-08-27 12:33
Ty też masz git symbolic-ref HEAD
który wyświetla pełny refspec.
Aby wyświetlić tylko nazwę oddziału w Git v1.8 i później (dziękuję Gregowi za wskazanie tego):
$ git symbolic-ref --short HEAD
W Git v1.7 + możesz także:
$ git rev-parse --abbrev-ref HEAD
Oba powinny nadać tę samą nazwę oddziału, jeśli jesteś w oddziale. Jeśli jesteś na oderwanej głowie, odpowiedzi są różne.
Uwaga:
Na wcześniejszym kliencie wygląda to tak:
$ git symbolic-ref HEAD | sed -e "s/^refs\/heads\///"
- Darien 26. mar 2014
399
2017-08-08 15:55
Dla własnego odniesienia (ale może być użyteczne dla innych) zrobiłem przegląd większości (podstawowych poleceń) technik wymienionych w tym wątku, każdy zastosowany do kilku przypadków użycia: HEAD jest (wskazując na):
- oddział lokalny (master)
- zdalna gałąź śledzenia, zsynchronizowana z lokalną gałęzią (origin / master z tym samym commitem co master)
- zdalna gałąź śledząca, niezsynchronizowana z lokalnym oddziałem (origin / feature-foo)
- tag (v1.2.3)
- Ogólna odłączona głowica (żadna z powyższych)
Wyniki:
git branch | sed -n '/\* /s///p'
- oddział lokalny:
master
- zdalna gałąź śledzenia (w synchronizacji):
(detached from origin/master)
- zdalna gałąź śledzenia (nie zsynchronizowana):
(detached from origin/feature-foo)
- etykietka:
(detached from v1.2.3)
- Ogólna odłączona głowica:
(detached from 285f294)
git status | head -1
- oddział lokalny:
# On branch master
- zdalna gałąź śledzenia (w synchronizacji):
# HEAD detached at origin/master
- zdalna gałąź śledzenia (nie zsynchronizowana):
# HEAD detached at origin/feature-foo
- etykietka:
# HEAD detached at v1.2.3
- Ogólna odłączona głowica:
# HEAD detached at 285f294
git describe --all
- oddział lokalny:
heads/master
- zdalna gałąź śledzenia (w synchronizacji):
heads/master
(Uwaga: nie remotes/origin/master
)
- zdalna gałąź śledzenia (nie zsynchronizowana):
remotes/origin/feature-foo
- etykietka:
v1.2.3
- Ogólna odłączona głowica:
v1.0.6-5-g2393761
cat .git/HEAD
:
- oddział lokalny:
ref: refs/heads/master
- wszystkie inne przypadki użycia: SHA odpowiedniego zatwierdzenia
git rev-parse --abbrev-ref HEAD
- oddział lokalny:
master
- wszystkie inne przypadki użycia:
HEAD
git symbolic-ref --short HEAD
- oddział lokalny:
master
- wszystkie inne przypadki użycia:
fatal: ref HEAD is not a symbolic ref
(FYI zostało to zrobione z git w wersji 1.8.3.1)
168
2017-10-25 08:53
Jeszcze jedna alternatywa:
git name-rev --name-only HEAD
118
2017-11-02 19:17
Bardzo proste, dostałem go w jednej liniowej (bash)
git branch | sed -n '/\* /s///p'
(kredyt: ograniczone odkupienie)
A gdy tam jestem, jeden liniowiec, aby uzyskać oddział śledzenia zdalnego (jeśli istnieje)
git rev-parse --symbolic-full-name --abbrev-ref @{u}
87
2018-04-04 15:20
Możesz po prostu wpisać wiersz poleceń (konsola) w systemie Linux, w katalogu repozytorium:
$ git status
i zobaczysz trochę tekstu, między innymi coś podobnego do:
...
On branch master
...
co oznacza, że jesteś obecnie włączony master
gałąź. Jeśli edytujesz dowolny plik w tym momencie i znajduje się on w tym samym lokalnym repozytorium (lokalnym katalogu zawierającym pliki, które są w zarządzaniu kontrolą wersji Git), edytujesz plik w tej gałęzi.
49
2018-06-05 20:31
git symbolic-ref -q --short HEAD
Używam tego w skryptach, które wymagają aktualnej nazwy oddziału. Pokaże ci bieżące krótkie symboliczne odniesienie do HEAD, które będzie twoją bieżącą nazwą oddziału.
26
2017-10-02 22:09
git branch | grep -e "^*" | cut -d' ' -f 2
wyświetli tylko nazwę oddziału
24
2018-06-14 13:08