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'
Ответ 8
Так как Git 1.5.3
(Sep 2007)
a --no-pager
доступен.
git --no-pager diff
Как предотвратить использование Git diff с помощью пейджера?
Пример
Начиная с версии v2.1, по умолчанию используется
Git v2.1 Замечания к выпуску
Ответ 9
Восемь лет спустя я нахожу отличный ответ: 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 через сгиб, сначала, а затем на меньшее: завернутый, меньше высоты страницы, сохраняйте подсветку синтаксиса.
Ответ 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)