Jak uruchomić dziennik git, aby zobaczyć zmiany tylko dla określonej gałęzi?


395

Mam oddział lokalny śledzący oddział zdalny / główny. Po uruchomieniu git-pulli git-log, dziennik wyświetli wszystkie zatwierdzenia w zdalnej gałęzi śledzenia, a także w bieżącej gałęzi. Ponieważ jednak wprowadzono tak wiele zmian w oddziale zdalnym, muszę zobaczyć tylko zatwierdzenia dokonane w bieżącym oddziale lokalnym.

Jakiego polecenia Git użyłby do wyświetlania zatwierdzeń tylko dla określonej gałęzi?

Uwagi:

Informacje o konfiguracji:

[branch "my-branch"]
  remote = origin
  merge = refs/heads/master

Odpowiedzi:


526

Zakładając, że twoja gałąź została utworzona z master, a następnie będąc w gałęzi (to znaczy, że gałąź została wyewidencjonowana):

git cherry -v master

lub

git log master..

Jeśli nie ma Cię w gałęzi, możesz dodać nazwę gałęzi do polecenia „git log”, w następujący sposób:

git log master..branchname

Jeśli twoja gałąź została utworzona origin/master, powiedz origin/masterzamiast master.


100
Doskonały! git log --no-merges master..było dokładnie tym, czego potrzebowałem.
Highway of Life

3
@HighwayofLife: --no-mergesmoże się wydawać, że pokazuje tylko zatwierdzenia z określonej gałęzi, ale tak naprawdę pokazuje tylko zatwierdzenia, które nie spowodowały scalenia
rynmrtn

5
Co powiesz na sposób na zrobienie tego, który nie wymaga ode mnie wpisywania / znajomości gałęzi nadrzędnej? :)
ELLIOTTCABLE

1
Aby uzyskać poczucie szybkości zmiany, użyłem następującej inkantacji :), która tworzy jednowierszowy format dziennika z imieniem autora pokazanym jako pierwszym, a następnie względnym wiekiem zatwierdzenia:git log --no-merges --pretty='%C(yellow)%h%d %Creset%an %Cgreen%ar:%Creset %s' --graph master..
Noah Sussman

2
nie powinienem czytać? git log master .. <twoja gałąź> --oneline - nie łączy się
Alex Nolasco

104

Posługiwać się:

git log --graph --abbrev-commit --decorate  --first-parent <branch_name>

Dotyczy tylko gałęzi docelowej (oczywiście --graph, --abbrev-commit --decorate są bardziej dopracowane).

Kluczową opcją jest --first-parent: „Śledź tylko pierwszy zatwierdzenie nadrzędne po zobaczeniu zatwierdzenia scalania” ( https://git-scm.com/docs/git-log )

Zapobiega wyświetlaniu wideł zatwierdzania.


25
--first-parent <branch_name>jest opcją. Pracuje !
parasrish

3
Gdzie jest nazwa oddziału, gałąź, której historię chcę tylko zobaczyć? W gałęzi z tylko 3 zmianami pokazuje mi to setki.
Ed Randall

1
--first-parent <branch_name>też dla mnie pracował! Skończyłem z aliasem do git log --first-parent $current_branch_name --no-merges. W odpowiedzi na @EdRandall pokaże zatwierdzenia na gałęzi + te, z których był rozgałęziony. Na przykład:
Rachel

2
Ups, przesłałem wkrótce, oto przykład: Zatwierdzasz A i B na master. Rozgałęziasz się new_featureod mistrza. Dodajesz do niego zatwierdzenia C i D. Następnie dodajesz E i F do master. Następnie scalasz master z new_feature. Używając git logdalej new_feature, zobaczysz „merge master”, F, E, D, C, A, B.Używając git log --first-parent new_feature --no-merges, zobaczysz D, C, A, B.
rachel

24

Jeśli chcesz tylko tych zatwierdzeń, które są wykonywane przez ciebie w konkretnej gałęzi, użyj poniższego polecenia.

git log branch_name --author='Dyaniyal'

13

Problem, który miałem, który wydaje mi się podobny do tego, jest taki, że mistrz był zbyt daleko przed moim punktem rozgałęzienia, aby historia była przydatna. (Nawigacja do punktu rozgałęzienia trwałaby zbyt długo).

Po kilku próbach i błędach dało mi to mniej więcej to, czego chciałem:

git log --graph --decorate --oneline --all ^master^!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.