git diff-обработка длинных линий?



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



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



есть ли способ, чтобы предотвратить эту проблему, или просто сделать линии вместо обруча?



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

804   16  

16 ответов:

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

обычно, под Linux less будут использованы.

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

$ GIT_PAGER='' git diff

без пейджера, линии будут упаковка.

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

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

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

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

$ git config core.pager 'less -r' 

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

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

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

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

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

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>

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

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

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

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

Ура

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

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

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

Начиная С Git 1.5.3 ( Sep 2007)

a --no-pager опция была доступна.

git --no-pager diff

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

пример

начиная с версии 2.0, 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: wrapped, меньше высоты страницы правильно, держите подсветку синтаксиса.

вы можете просто передать вывод git diff в more:

git diff | more

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

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

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

git diff --color | less -R

список текущих/по умолчанию:

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

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

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

the-S: приводит к тому, что линии длиннее ширины экрана будут нарезаны, а не сложены.

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

Я не смог настроить git, чтобы использовать его, Хотя. Так что мне придется потрудиться, чтобы получить обе версии файла в первую очередь.

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

git diff > text.txt

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

sublime text.txt

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

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

Comments

    Ничего не найдено.