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^..c
to zrobić?
181
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 <[email protected]>
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 .
git show --name-only <sha1>
!git show -s <commit>
.-1
? Gdzie to jest udokumentowane?git help log
sekcji „Commit Limiting”. Lub zobacz git-scm.com/book/en/v2/ ...-<number>
ogranicza liczbę zatwierdzeń do wyjścia.git log -p c -1
właśnie to robi.źródło
-n 1
lub--max-number=1
i jest udokumentowana tutaj .Możesz użyć do filtrowania zmian według opisu zatwierdzenia:
gdzie
git log --grep='part_of_description'
wybierz zatwierdzenia zawierające „part_of_description” i-p
pokaż zestaw zmian każdego zatwierdzeniaźródło