Как обернуть git комментировать комментарии?

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

Спасибо.

Ответ 1

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


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

В соответствии с этот блог, так как журнал git не делает каких-либо оберток, вам нужно отформатировать свой комментарий соответствующим длина линии

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

Как сказано здесь:

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

  • Жесткий обертку с 72 символами.
  • Однократное краткое изложение фиксации
  • Вслед за единственной пустой строкой
  • Последующие детали поддержки

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

Ответ 2

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

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

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

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

Ответ 3

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

Чтобы изменить это, не изменяя сообщения фиксации (меньше и bash пример):

$ echo $LESS
-FRSX

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

echo "LESS=-FRX;export LESS" >> ~/.bash_profile
source ~/.bash_profile

Ответ 4

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

git log | more

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

Ответ 5

Как минимум, в версии 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"'

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

Ответ 6

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

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

git config --global core.pager 'less -+S'

Ответ 7

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

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

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

Ответ 8

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

Ответ 9

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

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

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

Ответ 10

Личное предложение будет простым. Если вы хотите видеть полные строки в меньшем пейджере, просто введите -S, это изменит на складывание строк или назад, если вы хотите просмотреть раздел таким образом.

Ответ 11

Итак, я искал решение подобной проблемы и наткнулся на этот вопрос. В моем случае я запускаю показ git, и у меня есть 2 строки, где изменение находится в одном слове, к концу очень длинной строки. Я решил решить это с помощью аналогичного подхода к тому, как я это делаю с git diff, используя параметр -word-diff-regex.

git show --color --word-diff-regex="[^[:space:],]+" 55de9c954d5d74a185879d3441a69cc1889c00f1 |more

Ответ 12

Если nano является вашим предпочтительным редактором, вы можете настроить git на использование nano с автоматической упаковкой, например. 72 символа:

git config --global core.editor "nano -r 72"

Ответ 13

Для тех, кто использует SourceTree, есть параметр (Параметры > Общие), который будет показывать столбец в сообщении о фиксации:

установить настройки проводки в SourceTree

пример руководства по фиксации