Git diff - обработка длинных строк?

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

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

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

(выполняется git 1.5.5 через mingw32)

Ответ 1

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

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

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

$ GIT_PAGER='' git diff

Без пейджера линии будут обертываться.

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

$ GIT_PAGER='' git diff --no-color

Ответ 2

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

Ответ 3

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

$ git config core.pager 'less -r' 

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

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

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

Ответ 4

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

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

git diff --word-diff

В этом случае вы получите значительно отличающийся вывод 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

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

result of just <code>git diff</code>

Вы можете получить следующее:

result of <code>git diff --word-diff</code>

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

Ответ 5

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

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

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

Приветствия

Ответ 6

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

Ответ 7

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

git config --global core.pager 'less -+$LESS -FRX'

Ответ 10

Не идеальное решение, но gitk и git-gui могут показывать эту информацию, и имеют полосы прокрутки.

Ответ 11

Вы можете просто выполнить вывод git diff:

git diff | more

Ответ 12

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

Ответ 13

Никто не указывал это до сих пор. Его довольно просто запомнить, и никакой дополнительной конфигурации не требуется в конфигурации git config

git diff --color | less -R

Ответ 14

укажите текущую конфигурацию по умолчанию:

  $ git config --global core.pager  
    less -FXRS -x2

затем обновите и оставьте значение -S как:

  $ git config --global core.pager 'less -FXR -x2'

-S: Вызывает линии, превышающие ширину экрана, которые нужно нарезать, а не складывать.

Ответ 15

Когда я в беде, я часто прибегаю к DiffMerge. Отличный инструмент разметки, который имеет встроенную подсветку. Кроме того, в последних версиях они добавили режим для горизонтального режима.

Я не смог настроить git, чтобы использовать его. Поэтому мне нужно гадать, чтобы сначала получить обе версии файла.

Ответ 16

Простой способ сделать это, в моем случае я использую Linux os

git diff > text.txt

Эта командная строка создает и помещает вывод git diff в text.txt то вы можете открыть его другим текстовым редактором, например, возвышенным текстом.

sublime text.txt

Надеюсь, он вам поможет.

Не забудьте удалить его после. = 0)