Wydrukuj komunikat zatwierdzenia danego zatwierdzenia w git

244

Potrzebuję polecenia hydraulicznego, aby wydrukować komunikat zatwierdzenia jednego podanego zatwierdzenia - nic więcej, nic mniej.

Mark Probst
źródło
3
Jeśli ktoś tu przyjdzie i szuka sposobu na wydrukowanie komunikatu zatwierdzenia w jednym wierszu, ale nie przejmuje się pojawieniem się skrótu na początku, następujące prace:git show -s --oneline <commit>
waldyrious
Gdzie powinniśmy dodać wiersz, aby wydrukować komunikat zatwierdzenia na serwerze? Miałem na myśli, który plik haka?
Co rozumiesz przez polecenie „hydrauliczne”?
Bryan Ash,

Odpowiedzi:

332

To nie jest „hydraulika”, ale zrobi dokładnie to, co chcesz:

$ git log --format=%B -n 1 <commit>

Jeśli absolutnie potrzebujesz polecenia „hydraulika” (nie wiesz, dlaczego jest to wymóg), możesz użyć rev-list:

$ git rev-list --format=%B --max-count=1 <commit>

Chociaż rev-listwydrukuje również zatwierdzenie sha (w pierwszym wierszu) oprócz komunikatu zatwierdzenia.

mipadi
źródło
4
Działa idealnie dla mnie - ale użyłem %s%bzamiast %B(na Linux
ie
17
%Bjest poprawnym specyfikatorem (przynajmniej w Git 1.7.2, nie jestem pewien, kiedy został dodany).
mipadi
2
%Bzostał dodany jakiś czas po wersji 1.7.1 (prawdopodobnie w wersji 1.7.1.1).
mipadi
1
Rzeczywiście tak jest - najwyraźniej Git 1.7.2. Bardzo dziękuję!
Mark Probst
Możesz także użyć: $ git log --format=%B -n 1 <commit> | cat -To da ci komunikat zatwierdzenia i brak zatwierdzenia sha, i możesz go „potokować”. Właściwie używam tego jako części mojego skryptu CI.
Paulo Muñoz
138

git showjest bardziej poleceniem hydraulicznym git logi ma te same opcje formatowania:

git show -s --format=%B SHA1
CharlesB
źródło
9
A jeśli chcesz tylko pierwszy wiersz („temat”), użyj %szamiast %B.
ntc2
13
(Wolę to od zaakceptowanej odpowiedzi „log” lub „rev-list”, ponieważ jest to operacja pojedynczego zatwierdzenia, a nie lista ograniczona do 1 pozycji.)
Rich
17

Nie hydraulika, ale mam je w moim .gitconfig:

lsum = log -n 1 --pretty=format:'%s'
lmsg = log -n 1 --pretty=format:'%s%n%n%b'

To „ostatnie podsumowanie” i „ostatnia wiadomość”. Możesz podać zatwierdzenie, aby uzyskać podsumowanie lub komunikat o tym zatwierdzeniu. (Używam 1.7.0.5, więc nie mam% B).

bstpierre
źródło
Jako parametr możesz przekazać argument -n. Zamiast zwracać tylko ostatnie zatwierdzenie, możesz zwrócić ostatnie 5 zatwierdzeń. Tutaj konieczna zmiana lsum = "! F () {git log -n $ 1 --pretty = format: '% s';}; f" lmsg = "! F () {git log -n $ 1 --pretty = format : '% s% n% n% b';}; f "Znalazłem go tutaj stackoverflow.com/questions/7005513/ ... Właśnie uruchomiłeś ten git lsum 5
kuklei
15

To da ci bardzo zwartą listę wszystkich wiadomości dla określonego czasu.

git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT
Harshniket Seta
źródło
4

Zacząłem używać

git show-branch --no-name <hash>

Wydaje się być szybszy niż

git show -s --format=%s <hash>

Oba dają ten sam wynik

nr
źródło
1
Pokazuje tylko pierwszy wiersz (% s), a nie cały komunikat zatwierdzenia („nic więcej, nic mniej”, jak napisał pytający). Jeśli masz sposób na wykonanie gałęzi show z% B, byłoby to pomocne.
Kanoniczny Chris
3

Używam do tego krótkiego logu:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 
mja
źródło