git log pojedynczej wersji


181

Mam zobowiązanie c. Chcę uzyskać zestaw zmian tego dokładnego zatwierdzenia c + metainformation i żadnego innego. Czy jest prostszy sposób niż git log -p c^..cto zrobić?

Odpowiedzi:



60

Odpowiedź Michała Trybusa jest najlepsza ze względu na prostotę. Ale jeśli nie chcesz różnicy w swoim wyjściu, zawsze możesz zrobić coś takiego:

git log -1 -U c

To da ci dziennik zatwierdzeń, a następnie będziesz mieć pełną kontrolę nad wszystkimi opcjami rejestrowania git do celów automatyzacji. W swoim przypadku powiedziałeś, że chcesz zestawu zmian. Najbardziej czytelnym dla człowieka sposobem na osiągnięcie tego byłoby:

git log --name-status --diff-filter="[A|C|D|M|R|T]" -1 -U c

Lub, jeśli używasz wersji git większej niż 1.8.X, będzie to:

git log --name-status --diff-filter="ACDMRT" -1 -U c

Daje to wyniki podobne do:

commit {c}
Author: zedoo <zedoo@stackoverflow.com>
Date: Thu Aug 2 {time-stamp}

   {short description}
D    zedoo/foo.py
A    zedoo/bar.py

Oczywiście możesz odfiltrować dowolne zdarzenia, które uznasz za stosowne, i sformatować wynik zgodnie z potrzebami za pomocą tradycyjnych poleceń git-log, które są tutaj dobrze udokumentowane .


14
Jeśli nie chcesz różnicy, zrób to git show --name-only <sha1>!
dbn

16
Jeśli po prostu nie chcesz różnicy, użyj git show -s <commit>.
moeffju,

3
Co robi -1? Gdzie to jest udokumentowane?
Alex

1
@alex Zobacz wyniki w git help logsekcji „Commit Limiting”. Lub zobacz git-scm.com/book/en/v2/ ... -<number> ogranicza liczbę zatwierdzeń do wyjścia.
LarsH


0

Możesz użyć do filtrowania zmian według opisu zatwierdzenia:

git log --grep='part_of_description' -p

gdzie git log --grep='part_of_description'wybierz zatwierdzenia zawierające „part_of_description” i -ppokaż zestaw zmian każdego zatwierdzenia

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.