Роздрукувати повідомлення про фіксацію даного комітету в git


244

Мені потрібна команда сантехніки, щоб надрукувати повідомлення про фіксацію однієї заданої комісії - ні більше, ні менше.


3
Якщо хтось приходить сюди, шукаючи спосіб надрукувати однорядкове повідомлення про фіксацію, але не хвилює хеш, який з’являється на початку, працює наступне:git show -s --oneline <commit>
waldyrious

Де слід додати рядок для друку повідомлення про фіксацію на серверній машині? Я мав на увазі, який файл гачка?

Що ви маєте на увазі під командою "сантехніка"?
Брайан Еш

Відповіді:


332

Це не "сантехніка", але вона зробить саме те, що ви хочете:

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

Якщо вам абсолютно потрібна команда "сантехніка" (не впевнені, чому це вимога), ви можете використовувати rev-list:

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

Хоча rev-listтакож буде надруковано sha sha (у першому рядку) на додаток до повідомлення.


4
Для мене прекрасно працював - але я використовував %s%bзамість %B(на скриньці Linux)
adamk

17
%Bє правильним специфікатором (принаймні, в Git 1.7.2, не впевнений, коли він був доданий).
mipadi

2
%Bдодавали десь після 1.7.1 (ймовірно, в 1.7.1.1).
mipadi

1
Дійсно це - Git 1.7.2 мабуть. Дуже дякую!
Марк Пробст

Ви також можете скористатися: $ git log --format=%B -n 1 <commit> | cat -Це дасть вам повідомлення про фіксацію і не виконує ша, і ви можете "передавати" це. Я фактично використовую це як частину мого сценарію CI.
Пауло Муньоз

138

git show- це більше команда сантехніки, ніж git logта має однакові параметри форматування:

git show -s --format=%B SHA1

9
І якщо ви просто хочете перший рядок ("тема"), використовуйте %sзамість %B.
ntc2

13
(Я віддаю перевагу цьому прийнятій відповіді "log" або "rev-list", оскільки це операція з
Rich

17

Не сантехніка, але я маю це у своїй .gitconfig:

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

Це "останній підсумок" та "останнє повідомлення". Ви можете надати зобов’язання, щоб отримати підсумок або повідомлення про це. (Я використовую 1.7.0.5, тому не маю% B.)


Ви можете передати аргумент -n як параметр. Таким чином, замість повернення лише останнього зобов’язання ви можете змусити повернути останні 5 комітів. Тут потрібна зміна lsum = "! F () {git log -n $ 1 --pretty = format: '% s';}; f" lmsg = "! F () {git log -n $ 1 --pretty = format : '% s% n% n% b';}; f "Знайдено тут stackoverflow.com/questions/7005513/… Ви просто запустите цей git lsum 5
kuklei

15

Це дасть вам дуже компактний перелік усіх повідомлень за визначений час.

git log --since=1/11/2011 --until=28/11/2011 --no-merges --format=%B > CHANGELOG.TXT

4

Я почав використовувати

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

Здається, це швидше, ніж

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

Обидва дають однаковий результат


1
Це показує лише перший рядок (% s), а не все повідомлення фіксації ("нічого більше, нічого менше", як написав запитувач). Якщо у вас є спосіб зробити шоу-філію з% B, то це було б корисно.
Канонічний Кріс

3

Для цього я використовую короткий журнал:

$ git shortlog master..
Username (3):
      Write something
      Add something
      Bump to 1.3.8 
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.