Лучший способ получить сообщение GIT commit с помощью короткого хэша?
Привет, ребята, я в настоящее время получаю сообщение о фиксации для определенного хеша фиксации, используя это ниже
hash='b55da97'
git log --pretty=oneline ${hash} | grep "${hash}" | awk '{ print $2 }'
Они кажутся крайне неэффективными, хотя есть ли более разумный способ сделать это, или я придерживаюсь grepping и awking?
Ответы
Ответ 1
git log
принимает (между прочим):
-
-n num
, чтобы ограничить количество показанных транзакций: выберите 1 (и если num
равно 9 или меньше, вы можете просто написать -num
, следовательно, -1
, для краткости)
-
--pretty=format:string with directives
, чтобы изменить формат вывода журнала. Директива %s
получает коммит "subject", что вы также получаете с помощью oneline
.
Следовательно: git log -n 1 --pretty=format:%s $hash
(или git log -1 --pretty=format:%s
) выполнит трюк здесь.
Полный список директив формата см. в git документации журнала в разделе "PRETTY FORMATS" (примерно на полпути вниз).
Ответ 2
В зависимости от того, сколько из сообщения о фиксации вы действительно хотите, есть несколько довольно подробных спецификаций, которые вы можете использовать:
· %s: subject
· %f: sanitized subject line, suitable for a filename
· %b: body
· %B: raw body (unwrapped subject and body)
Так что-то вроде git log -1 --pretty=format:%b <hash>
, или используйте один из других спецификаторов (думаю, %s
, вероятно, ближе к тому, что вы сейчас делаете). -1
ограничивает git log
только одним фиксатором, а не идет по дереву истории.
Ответ 3
Мне нравится иметь важные вещи, сбрасываемые в одну строку... Вот что я использую, построил другие ответы на этой странице:
git_log_for_commit.sh
IT=$(git log -1 --pretty=format:"%an, %s, %b, %ai" $*)
echo "$IT"
Выход
jdoe, WORK1766032 - Added templating engine, WIP, 2013-08-15 14:25:59 +0000
Ответ 4
Это может привести к некоторому
git log --pretty=oneline ${hash} | awk '$0~var {print $2}' var="${hash}"