W moim lokalnym repo ( test-branch
) utworzyłem gałąź do testowania, do której wypchnąłem Github
.
Jeśli przejdę do mojego Github
konta i wybiorę to test-branch
, wyświetli się informacja:
This branch is 1 commit ahead and 2 commits behind master
Moje pytania to:
- Jak mogę wyświetlić te informacje lokalnie (tj: polecenie, które pokazuje to na terminalu, zamiast konieczności otwierania,
Github
aby je zobaczyć)? Wiem, że widzę różnice między gałęziami za pomocą:
git diff master..test-branch
lub używając
Meld
(co wolę):git difftool master..test-branch
ale zastanawiałem się, czy istnieje sposób, aby zobaczyć osobno przed i za zatwierdzenia. IE: czy istnieje sposób, aby pokazać, że 1 zobowiązuje się sam, a następnie 2 same się zobowiązuje ?
git for-each-ref --format="%(push:track)" refs/heads
. Zobacz moją odpowiedź poniżejOdpowiedzi:
Oto sztuczka, którą znalazłem, aby porównać dwie gałęzie i pokazać, ile zatwierdzeń każda gałąź wyprzedza drugą (bardziej ogólna odpowiedź na twoje pytanie 1):
Dla lokalnych oddziałów:
git rev-list --left-right --count master...test-branch
Dla zdalnych oddziałów:
git rev-list --left-right --count origin/master...origin/test-branch
Daje to wynik jak poniżej:
1 7
Te środki wyjściowe: „w porównaniu do
master
,test-branch
wynosi 7 Zobowiązuje do przodu i 1 popełnić tyle.”Możesz także porównać oddziały lokalne z oddziałami zdalnymi, np.
origin/master...master
Aby dowiedzieć się, ile zatwierdzeńmaster
oddział lokalny jest przed / za swoim zdalnym odpowiednikiem.źródło
git rev-list --left-right --count origin/master...@
) - pod warunkiem, że użytkownik zrobił togit fetch
wcześniej; przydatne, aby zapobiec żądaniom ściągania z nieaktualnych gałęzi.git rev-list --left-right --count origin/master...@ | cut -f1
--left-only
lub--right-only
Przede wszystkim, aby zobaczyć, ile poprawek masz za lokalnymi, powinieneś zrobić,
git fetch
aby upewnić się, że masz najnowsze informacje z pilota.Domyślne wyjście
git status
mówi, ile wersji masz przed sobą lub za nimi, ale zwykle uważam to za zbyt szczegółowe:Wolę
git status -sb
:W rzeczywistości alias to po prostu
git s
i jest to główne polecenie, którego używam do sprawdzania statusu.Aby zobaczyć różnicę w „wersjach z wyprzedzeniem”
master
, mogę wykluczyć „korekty z tyłu” zorigin/master
:Aby zobaczyć różnicę w „wersjach za”
origin/master
, mogę wykluczyć „wersje przed” zmaster
:Jeśli jest 5 wersji przed lub za, łatwiej może być napisać w ten sposób:
AKTUALIZACJA
Aby zobaczyć wersje przed / za, oddział musi być skonfigurowany do śledzenia innego oddziału. Dla mnie jest to domyślne zachowanie, gdy klonuję zdalne repozytorium i po wypchnięciu gałęzi
git push -u remotename branchname
. Moja wersja to 1.8.4.3, ale tak to działa tak długo, jak pamiętam.Od wersji 1.8 możesz ustawić gałąź śledzenia w następujący sposób:
Od wersji 1.7 składnia była inna:
źródło
git
używasz? Nie mogę odtworzyć tego, co dostajeszgit status
ani z, ani zgit status -sb
. Jeśli spróbuję wykonać dowolne polecenie (po wykonaniugit fetch
), nie otrzymam żadnych informacji na temat zatwierdzeń przed / za.master
iorigin/master
chcę zobaczyć te różnice dlamaster
i innej gałęzitest-branch
. Czy możesz sformatować swoją odpowiedź w celu rozwiązania tego problemu?W Git 2.5+ masz teraz inną opcję, aby zobaczyć przód / tył dla wszystkich gałęzi, które są skonfigurowane do przekazywania do gałęzi.
Zobacz więcej w „ Wyświetlanie niepochodzących poleceń Git ”
źródło
refs/heads
z nazwą bieżącego oddziału ( stackoverflow.com/a/12142066/6309 ):refs/heads/$(git rev-parse --abbrev-ref HEAD)
Możesz także użyć
awk
go, aby był trochę ładniejszy:Możesz nawet utworzyć alias, który zawsze najpierw pobiera pochodzenie, a następnie porównuje gałęzie
źródło
Po wykonaniu pobierania git, możesz uruchomić status git, aby pokazać, ile zatwierdzeń lokalny oddział jest przed lub za zdalną wersją oddziału.
Nie pokaże ci jednak, ile zatwierdzeń wyprzedza lub opóźnia inny oddział. Masz do dyspozycji pełną wersję, patrząc na github lub korzystając z rozwiązania takiego jak Vimhsa, do którego link znajduje się powyżej: Status Git nad wszystkimi repozytoriami
źródło