Как обернуть git комментировать? - PullRequest
67 голосов
/ 22 января 2010

Есть ли способ обернуть комментарии git commit (при просмотре через git log), чтобы они не обрезались в конце строки? Кажется, должно быть довольно простое решение, но я не смог его найти.

Спасибо.

Ответы [ 15 ]

52 голосов
/ 14 июля 2011

Или вы можете изменить пейджер на использование less -R

$ git config --global core.pager 'less -R'

Это скажет меньше, чтобы перестать пытаться контролировать форматирование экрана (обычно вы можете прокручивать вправо и влево во время git log с помощью клавиш со стрелками). И, как говорится в менее наставлении: «Таким образом, могут возникнуть различные проблемы с отображением, такие как длинные строки, разделенные не в том месте». Это то, что вам нужно, вы хотите, чтобы конец строки отображался в правой части экрана (не в том месте), а не там, где его написал автор комментария.

Также отметим, что нажатие клавиши вправо без изменения вашего пейджера позволит вам увидеть больше кода. Какой мой предпочтительный метод.

33 голосов
/ 22 января 2010

Редактировать 2011: прочее ответов (upvoted) выделяют возможность изменить опции less , пейджер по умолчанию, используемый git.
Замечание в конце моего ответа остается в силе: даже если вы видите длинное сообщение о коммите, это не означает, что другие инструменты, имеющие дело с указанным (длинным) сообщением, смогут их обработать.


Оригинальный ответ (январь 2010 г.) о политике формата сообщений о коммите:

Согласно этого блога , поскольку git log не выполняет никакого переноса, вам необходимо отформатировать комментарий с соответствующей длиной строки

  • git log не выполняет специальной специальной упаковки сообщений фиксации.
    С пейджером по умолчанию less -S это означает, что ваши абзацы выходят далеко за пределы экрана, что затрудняет их чтение.
    На терминале из 80 столбцов, если мы вычтем 4 столбца для отступа слева и еще 4 для симметрии справа, у нас останется 72 столбца.
  • git format-patch --stdout преобразует серию коммитов в серию электронных писем, используя сообщения для тела сообщения.
    Хороший почтовый сетевой этикет требует, чтобы мы оборачивали наши обычные текстовые электронные письма так, чтобы в терминале с 80 столбцами было место для нескольких уровней вложенных индикаторов ответа без переполнения.

Как сказал здесь :

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

  • Твердый перенос в 72 символа
  • Один краткий отчет о коммите
  • За ними следует одна пустая строка
  • За этим следуют подтверждающие данные

Все источники (включая книгу GitPro , которая содержит 50 символов для первой строки, а комментарии Jörg W Mittag ) настаивают на необходимости обернуть себя комментарием, конечно, потому что , даже если Git смог справиться с длинными строками, другие инструменты в цепочке обработки (электронная почта, исправления, ...) могут не работать.

19 голосов
/ 11 октября 2012

Кажется, нет идеального пути. Обходной путь, который я использую, - просто перенаправить вывод в more (или less, или cat и т. Д.):

git log | more

Это оборачивает длинные строки, по крайней мере, в моей системе (однако, вы пропускаете форматирование цвета).

17 голосов
/ 03 декабря 2010

В предыдущем ответе упоминалось, что пейджер по умолчанию (часто «меньше») отвечает за перенос, и по умолчанию он обычно прерывает длинные строки.

Чтобы изменить это без изменения ваших сообщений о коммитах (пример less и bash):

$ echo $LESS
-FRSX

Это было то, что у меня было по умолчанию, теперь, чтобы перезаписать переменную окружения LESS.

echo "LESS=-FRX;export LESS" >> ~/.bash_profile
source ~/.bash_profile
14 голосов
/ 18 марта 2013

Обратите внимание, что меньше -r (как рекомендовано выше) приводит к тому, что вы меньше забываете о количестве строк, и вы пропускаете коммиты, потому что ваши самые верхние строки прокручиваются вне поля зрения! Настоящим исправлением является отключение опции -S, которую git включает по умолчанию, если не задана переменная среды LESS.

Хорошим исправлением является изменение конфигурации git следующим образом:

git config --global core.pager 'less -+S'
12 голосов
/ 07 декабря 2012

По крайней мере, в git версии 1.7.9.5, git log поддерживает перенос строк. Из журнала помощи git:

 PRETTY FORMATS
   %w([<w>[,<i1>[,<i2>]]]): switch line wrapping

Так, например, следующее оборачивает длинные объекты в 72 столбца:

alias gl='git log --format="%C(yellow)%h %an %ad%C(reset)%n%w(72,1,2)%s"'

(Согласитесь, что следует придерживаться соглашений о форматировании, а не полагаться на это. Однако это может оказаться полезным до тех пор, пока не наступит день, когда все будут знать и уважать соглашения.)

4 голосов
/ 24 мая 2013

Это помогло мне.

git --no-pager log WhateverBranch | head -n40

Как правило, ветвь имеет большой размер, поэтому, отправляя ее в заголовок и используя ключ -n, вы можете получить только самые последние 40 (или сколько угодно) строк вывода, которые вам нужны, и обернуть их (не нужно прокручивать). ). Имейте в виду, что в этом подходе также отсутствует форматирование цвета.

2 голосов
/ 23 апреля 2015

Использование этого формата сделало мою жизнь счастливее:

log --pretty=format:\"%w(80,1,41)%h - %an, %ar : %s\"

Поскольку поля в выводе перед сообщением о фиксации для большинства моих коммитов составляли около 39 символов, чтение стало намного проще.

2 голосов
/ 18 января 2014

Как упомянул VonC, вы можете обернуть ваши сообщения коммита до 72 символов и убить много птиц одним камнем. Этот git hook автоматически упаковывает ваши коммит-сообщения и работает с любым редактором: https://github.com/surabhigupta/AutoWrapSeventyTwo

1 голос
/ 11 января 2018

КОРОТКИЙ ОТВЕТ:
Введите -S затем Введите при просмотре журнала git.

ПОДРОБНЫЙ ОТВЕТ:
git log выводит с использованием less средства просмотра текста, поэтому просто наберите -S, а затем Введите , чтобы переключаться между двумя режимами переноса строк: «Обрезать длинные строки» и «Сгибать длинные строки» Параметр «Сложить длинные строки» включает перенос слов.

Источник, который помог мне узнать это: https://superuser.com/a/272826/425838

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...