Есть ли способ обернуть комментарии git commit (при просмотре через git log
), чтобы они не были обрезаны в конце строки? Похоже, должно быть довольно простое решение, но я не смог его найти.
Спасибо.
Есть ли способ обернуть комментарии git commit (при просмотре через git log
), чтобы они не были обрезаны в конце строки? Похоже, должно быть довольно простое решение, но я не смог его найти.
Спасибо.
Изменить 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 смог иметь дело с длинными строками, другие инструменты в цепочке обработки (электронная почта, патчи,... ) не может.
Или вы можете изменить свой пейджер, чтобы использовать less -R
$ git config --global core.pager 'less -R'
Это будет меньше, если вы перестанете пытаться контролировать форматирование экрана (обычно вы можете прокручивать вправо и влево во время git log
с помощью клавиш со стрелками). И поскольку в руководстве меньше сказано: "Таким образом, могут возникнуть различные проблемы с отображением, например, если длинные строки разбиты в неправильном месте". Это то, что вы хотите, вы хотите, чтобы строка заканчивалась справа от вашего экрана (неправильное место), а не там, где ее написал автор комментария.
Также следует отметить, что нажатие клавиши со стрелкой вправо без изменения вашего пейджера позволит вам увидеть больше кода. Это мой предпочтительный метод.
Упоминается в предыдущем ответе, что пейджер по умолчанию (часто "меньше" ) отвечает за упаковку, и по умолчанию он обычно прерывает длинные строки.
Чтобы изменить это, не изменяя сообщения фиксации (меньше и bash пример):
$ echo $LESS
-FRSX
Это то, что у меня было по умолчанию, теперь перезаписать переменную среды LESS.
echo "LESS=-FRX;export LESS" >> ~/.bash_profile
source ~/.bash_profile
Кажется, что нет идеального способа. Обходной путь, который я использую, - это просто передать вывод на more
(или less
, или cat
и т.д.):
git log | more
Это завершает длинные строки, по крайней мере, в моей системе (однако вы пропускаете форматирование цвета).
Как минимум, в версии 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"'
(Согласились, что вместо того, чтобы полагаться на это, следует придерживаться соглашений о форматировании фиксации. Однако это может оказаться полезным до тех пор, пока не наступит день, когда все знают и уважают соглашения.)
Обратите внимание, что меньше -r (как было рекомендовано выше) приводит к тому, что меньше забывает счетчик строк, и вы пропускаете фиксации, потому что ваши самые верхние строки будут прокручиваться из поля зрения! Реальное исправление отключает параметр -S, который git включает по умолчанию, если переменная среды LESS не установлена.
Хорошее исправление изменяет конфигурацию git следующим образом:
git config --global core.pager 'less -+S'
Это помогло мне.
git --no-pager log WhateverBranch | head -n40
Как правило, ветвь большая, поэтому, связывая ее с головкой и используя ключ -n, вы можете захватить только самые последние 40 (или сколько угодно) строк вывода, которые вам нужны, и они должны быть обернуты (нет необходимости прокручивать). Помните, что этот подход также не имеет форматирования цвета.
Как упоминалось в VonC, вы можете обернуть свои сообщения о фиксации на 72 символа и убить много птиц одним камнем. Этот git hook автоматически обматывает ваши сообщения фиксации и работает с любым редактором: https://github.com/surabhigupta/AutoWrapSeventyTwo
Использование этого формата сделало мою жизнь более счастливой:
log --pretty=format:\"%w(80,1,41)%h - %an, %ar : %s\"
Так как поля на выходе перед сообщением фиксации составляли около 39 символов для большинства моих коммитов, это делает чтение намного проще.
Личное предложение будет простым. Если вы хотите видеть полные строки в меньшем пейджере, просто введите -S, это изменит на складывание строк или назад, если вы хотите просмотреть раздел таким образом.
Итак, я искал решение подобной проблемы и наткнулся на этот вопрос. В моем случае я запускаю показ git, и у меня есть 2 строки, где изменение находится в одном слове, к концу очень длинной строки. Я решил решить это с помощью аналогичного подхода к тому, как я это делаю с git diff, используя параметр -word-diff-regex.
git show --color --word-diff-regex="[^[:space:],]+" 55de9c954d5d74a185879d3441a69cc1889c00f1 |more
Если nano является вашим предпочтительным редактором, вы можете настроить git на использование nano с автоматической упаковкой, например. 72 символа:
git config --global core.editor "nano -r 72"
Для тех, кто использует SourceTree, есть параметр (Параметры > Общие), который будет показывать столбец в сообщении о фиксации: