git diff - обрабатывает длинные строки? - PullRequest
223 голосов
/ 26 сентября 2008

Я запускаю git-diff для файла, но изменение находится в конце длинной строки.

Если я использую клавиши курсора для перемещения вправо, он теряет цветовое кодирование, и хуже того, линии не выстраиваются в линию, что усложняет отслеживание изменений.

Есть ли способ предотвратить эту проблему или просто сделать перенос строк вместо этого?

(запуск git 1.5.5 через mingw32)

Ответы [ 16 ]

223 голосов
/ 24 июня 2010

Или, если вы используете меньше как пейджер по умолчанию, просто наберите -S при просмотре diff для повторного включения.

113 голосов
/ 30 сентября 2008

Отображение вывода git diff обрабатывается любым используемым пейджером.

Обычно в Linux используется less.

Вы можете указать git использовать другой пейджер, установив переменную окружения GIT_PAGER. Если вы не возражаете против пейджинга (например, ваш терминал позволяет вам прокручивать назад), вы можете явно установить пустое значение GIT_PAGER, чтобы остановить его с помощью пейджера. Под Linux:

$ GIT_PAGER='' git diff

Без пейджера строки будут перенесены.

Если ваш терминал не поддерживает цветной вывод, вы также можете отключить его, используя аргумент --no-color или поместив запись в раздел color вашего файла конфигурации git.

$ GIT_PAGER='' git diff --no-color
112 голосов
/ 09 сентября 2010

Вы также можете использовать git config, чтобы настроить пейджер для переноса.

$ git config core.pager 'less -r' 

Устанавливает настройку пейджера для текущего проекта.

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

Устанавливает пейджер глобально для всех проектов

39 голосов
/ 08 октября 2013

С полным доверием к Джошу Дилу в комментарии к этому ответу , я, тем не менее, чувствую, что это должен быть ответ самому себе, поэтому добавив его :

Один из способов справиться с различиями в длинных строках - использовать разностный текст. Это можно сделать с помощью:

git diff --word-diff

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

Например, вместо того, чтобы получить что-то вроде этого:

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
-this is a short line
+this is a slightly longer line

Вы можете получить что-то вроде этого:

diff --git a/test-file.txt b/test-file.txt
index 19e6adf..eb6bb81 100644
--- a/test-file.txt
+++ b/test-file.txt
@@ -1 +1 @@
this is a [-short-]{+slightly longer+} line

Или с раскрашиванием вместо этого:

imagegit diff">

Вы можете получить это:

imagegit diff --word-diff">

Теперь, если вы сравниваете действительно длинную строку, у вас все еще могут быть проблемы с пейджерной ситуацией, которую вы первоначально описали, и которая была адресована, очевидно, к удовлетворению, в других ответах. Надеемся, что это даст вам новый инструмент, чтобы легче было определить, что на линии изменилось.

29 голосов
/ 19 сентября 2012

Чтобы использовать меньше как пейджер и сделать перенос строк постоянным, вы можете просто включить опцию сгиба длинных строк:

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

Таким образом, вам не нужно вводить его при использовании less.

Приветствия

19 голосов
/ 21 мая 2009

Просто погуглил этот. GIT_PAGER='less -r' у меня работает

18 голосов
/ 24 мая 2011

Mac OSX: Ни один из других ответов, кроме чьего-то 45 '-S', пока работает меньше, работал для меня. Чтобы сделать перенос слов постоянным, потребовалось следующее:

git config --global core.pager 'less -+$LESS -FRX'
10 голосов
/ 14 мая 2014

С Git 1.5.3 ( сент. 2007 )

Доступна опция --no-pager.

git --no-pager diff

Как запретить git diff использовать пейджер?

Пример

Начиная с версии 2.1, по умолчанию используется обтекание

Замечания к выпуску Git v2.1

5 голосов
/ 12 февраля 2016

Восемь лет спустя я нахожу превосходный ответ от https://superuser.com/questions/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff:

git config core.pager `fold -w 80 | less`

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

3 голосов
/ 11 марта 2017

Когда вы используете «git diff», и он показывает несколько страниц (вы видите «:» в конце страницы), в этом случае вы можете набрать «-S» и нажать Enter. (S должно быть заглавной). он будет переключать сгибы длинных линий.

...