git diff - обработка длинных строк?
Вопрос
Я убегаю git-разница в файле, но изменение находится в конце длинной строки.
Если я использую клавиши курсора для перемещения вправо, это приводит к потере цветовой кодировки и, что еще хуже, линии не выстраиваются в линию, что затрудняет отслеживание изменений.
Есть ли способ предотвратить эту проблему или просто сделать перенос строк вместо этого?
(запуск git 1.5.5 через mingw32)
Решение
Отображение выходных данных git diff
обрабатывается любым пейджером, который вы используете.
Как правило, под управлением Linux, less
был бы использован.
Вы можете указать git использовать другой пейджер, установив GIT_PAGER
переменная среды.Если вы не возражаете против подкачки по страницам (например, ваш терминал позволяет вам прокручивать назад), вы можете попробовать явно настроить GIT_PAGER
очистить, чтобы остановить его с помощью пейджера.Под управлением Linux:
$ GIT_PAGER='' git diff
Без пейджера строки будут обтекаться.
Если ваш терминал не поддерживает цветной вывод, вы также можете отключить это с помощью --no-color
аргумент или добавление записи в раздел color вашего конфигурационного файла git.
$ GIT_PAGER='' git diff --no-color
Другие советы
Или, если вы используете less в качестве пейджера по умолчанию, просто введите -S
при просмотре разницы для повторного включения обертывания меньше.
Вы также можете использовать git config
чтобы настроить пейджер на перенос.
$ git config core.pager 'less -r'
Задает настройку пейджера для текущего проекта.
$ git config --global core.pager 'less -r'
Устанавливает пейджер глобально для всех проектов
Отдавая должное Josh Diehl в комментарий Для этот ответ, я, тем не менее, чувствую, что это должно быть ответом само по себе, поэтому добавляю его:
Один из способов справиться с различиями в длинных строках - использовать 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
Или, с раскрашиванием, вместо этого:
Вы могли бы получить это:
Теперь, если вы сравниваете действительно длинную очередь, у вас все еще могут возникнуть проблемы с ситуацией с пейджером, которую вы первоначально описали и которая была рассмотрена, по-видимому, к удовлетворению, в других ответах.Надеюсь, это даст вам новый инструмент, позволяющий легче определить, что изменилось в строке.
Чтобы использовать less в качестве пейджера и сделать перенос строк постоянным, вы можете просто включить опцию сгибать длинные строки:
git config --global core.pager 'less -+S'
Таким образом, вам не придется вводить его при использовании less.
Ваше здоровье
Только что погуглил это. GIT_PAGER='less -r'
работает на меня
Mac OSX:Ни один из других ответов, кроме "-S" от someone45, пока работает less, не сработал для меня.Чтобы сделать перенос слов постоянным, потребовалось следующее:
git config --global core.pager 'less -+$LESS -FRX'
Начиная с Git 1.5.3 (Сентябрь 2007)
a --no-pager
опция была доступна.
git --no-pager diff
Как мне запретить git diff использовать пейджер?
Начиная с версии v2.1, wrap используется по умолчанию
Восемь лет спустя я нахожу превосходный ответ от 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 сначала через fold, затем в less:завернутый, меньшая высота страницы правильная, сохраняйте подсветку синтаксиса.
Вы могли бы просто передать выходные данные git diff в more:
git diff | more
Не идеальное решение, но gitk
и git-gui
может как отображать эту информацию,
так и иметь полосы прокрутки.
Когда вы используете "git diff" и он показывает несколько страниц (вы видите ":" в конце страницы), в этом случае вы можете ввести "-S" и нажать enter.(S должно быть заглавным).это позволит переключать сгиб длинных линий.
До сих пор никто не указывал на это.Его довольно просто запомнить, и никакой дополнительной настройки в конфигурации git выполнять не нужно
git diff --color | less -R
укажите текущую конфигурацию / конфигурацию по умолчанию:
$ git config --global core.pager
less -FXRS -x2
затем обновите и исключите -S, подобные:
$ git config --global core.pager 'less -FXR -x2'
тот -С:Приводит к обрезке строк длиной, превышающей ширину экрана, а не к сгибанию.
Когда я в беде, я часто прибегаю к хитрости.Отличный инструмент для выделения различий, который имеет встроенную подсветку различий.Кроме того, в последних версиях они добавили режим для работы в горизонтальном режиме.
Однако мне не удалось настроить git для его использования.Так что мне действительно приходится повозиться, чтобы сначала получить обе версии файла.
Самый простой способ сделать это, в моем случае я использую ОС Linux
git diff > text.txt
Эта командная строка создает и помещает вывод git diff в text.txt затем вы можете открыть его с помощью другого текстового редактора, например sublime text.
sublime text.txt
Надеюсь, это поможет вам.
не забудьте удалить его после.=0)