Как вывести git log только с первой строки? - PullRequest
280 голосов
/ 18 декабря 2010

Я пытаюсь настроить формат для git log. Я хочу, чтобы все коммиты отображались в одной строке. Каждая строка должна показывать только первую строку сообщения о коммите.
Я обнаружил , что git log --pretty=short должен сделать трюк, но на моем компьютере он показывает полный журнал как git log (кроме метки времени).

Далее я попытался использовать заполнители , как определено на странице справки . Хотя я не смог найти команду, чтобы сократить сообщение журнала. Я попробовал эту строку git log --pretty=format:'%h : %s', которая показывает закороченный хэш %h и полное сообщение %s в одну строку.

Я использую git version 1.7.3.1.msysgit.0 в Vista.


Может быть, это как-то связано с тем, как я пишу свои сообщения коммита. Вот пример:

Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.

Итак, в данном примере я хочу вывести только Added some functionality. с добавлением кратчайшего хэша.

Ответы [ 7 ]

463 голосов
/ 20 декабря 2010

Вы пробовали это?

git log --pretty=oneline --abbrev-commit

Возможно, проблема в том, что вы пропускаете пустую строку после первой. Команда, приведенная выше, обычно работает для меня, но я только что протестировал коммит без пустой второй строки. Я получил тот же результат, что и вы: все сообщение в одной строке.

Пустая вторая строка является стандартом в сообщениях git commit. Поведение, которое вы видите, возможно, было реализовано специально.

Первая строка сообщения о фиксации предназначена для краткого описания. Если вы не можете сделать это в одной строке, вы можете использовать несколько, но git считает все, что находится до первой пустой строки, «кратким описанием». oneline печатает все краткое описание, поэтому все ваши 3 строки.

132 голосов
/ 18 декабря 2010

git log --oneline делает то, что вы хотите?

33 голосов
/ 20 апреля 2016

Лучше и проще git log путем создания псевдонима . Вставьте приведенный ниже код в терминал всего один раз за один сеанс. Вставьте код в профиль zshrc или bash, чтобы сделать его постоянным.

git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

Выход

git lg

Вывод измененные строки

git lg -p

Дополнительная литература.
https://coderwall.com/p/euwpig/a-better-git-log
Расширенное чтение.
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/

24 голосов
/ 13 сентября 2013

Вы можете определить глобальный псевдоним, чтобы вы могли вызывать короткий журнал более удобным способом:

git config --global alias.slog "log --pretty=oneline --abbrev-commit"

Затем вы можете вызвать его с помощью git slog (он работает даже с автозаполнением, если он у вас включен).

17 голосов
/ 24 августа 2018

Это распечатает только сообщение (только тему) без хеша:

git log --pretty=format:%s
8 голосов
/ 15 июня 2016

Без коммитов, только хеш:

git log --pretty=oneline | awk '{print $1}'
0 голосов
/ 19 декабря 2010

Если вы хотите всегда использовать git log, вы можете добавить псевдоним git с помощью

git config --global alias.log log --oneline

, после чего git log напечатает то, что обычно печатается с помощью git log --oneline

...