Вопрос

Я убегаю 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

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

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

Вы могли бы получить это:

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

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

Чтобы использовать 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 используется по умолчанию

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

Восемь лет спустя я нахожу превосходный ответ от 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)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top