Jak mogę wydrukować dziennik dla oddziału innego niż obecny?

83

Jestem na gałęzi z kilkoma zmianami. Zmiana gałęzi jest uciążliwa, ponieważ niektóre pliki są blokowane przez procesy, więc aby zmienić gałąź, musiałbym zatrzymać wszystkie procesy, które mają blokady, a następnie stashzmiany przed sprawdzeniem innej gałęzi, aby zobaczyć jej dziennik.

Czy można wyświetlić dziennik z innej branży bez konieczności sprawdzania go?

BanksySan
źródło
1
Czy próbowałeś git log <branch>, gdzie <branch>oznacza nazwę branży?
jub0bs
2
@Jubobs, nie, nie zrobiłem. Powinienem po prostu wypróbować oczywiste, zanim ucieknę się do przeszukania Internetu i znalezienia egzotycznych sugestii wokół cherryi rev-list.
BanksySan

Odpowiedzi:

126

TL; DR

Posługiwać się

git log <branch>

gdzie <branch>jest nazwa interesującej nas branży.

Ze strony git-logman ...

Uproszczona wersja git-logstreszczenia podanego na stronie podręcznika tego polecenia to

git log [<revision range>]

Dalej znajdziesz następujący fragment:

Jeśli nie <revision range>podano, domyślnie HEAD(czyli cała historia prowadząca do bieżącego zatwierdzenia)

Innymi słowy, git logjest równoważne git log HEAD. Jeśli jesteś na gałęzi, mybranchpowiedzmy, to polecenie jest również równoważne git log mybranch.

Chcesz ograniczyć dziennik do zatwierdzeń osiągalnych z innej gałęzi, tj. Gałęzi, w której aktualnie nie jesteś. Najłatwiej jest to zrobić jawnie przekazując nazwę branży do git log:

git log <branchname>

Zobacz stronę podręcznika gitrevisions, aby uzyskać więcej informacji na temat wielu form, jakie <revision-range>może przyjąć argument.

jub0bs
źródło
Wygląda na to, że musisz najpierw mieć gałąź, aby została wyewidencjonowana lokalnie, aby uruchomić "git log" w ten sposób. Przynajmniej git 2.27.0 zachowuje się w ten sposób.
a_girl
@a_girl Nie wiem, co masz na myśli, mówiąc tutaj „wyewidencjonowany lokalnie”. Możesz to uruchomić w lokalnym oddziale (np. master), Niezależnie od tego, czy jest wyewidencjonowany czy nie, oraz w zdalnym oddziale (np origin/master.).
jub0bs
1
ooooohhh, teraz mam to. Próbowałem git log mybranchi wyrzuciło błąd, ale po uruchomieniu git checkout mybranch; git checkout master; git log mybranchdziałało nawet bez „origin /”. Dlatego pomyślałem, że najpierw muszę zapłacić oddziału. Ale po prostu musiałem użyć opcji „git log origin / mybranch”, aby wyszukać historię zdalnej gałęzi. Dziękuję Ci.
a_girl