git diff-обработка длинных линий?
Я git-diff в файле, но изменение находится в конце длинной строки.
Если я использую клавиши курсора для перемещения вправо он теряет цветовое кодирование и хуже линии не выстраиваются, что делает его труднее отслеживать изменения.
есть ли способ, чтобы предотвратить эту проблему, или просто сделать линии вместо обруча?
(запуск git 1.5.5 через mingw32)
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или, с раскрашиванием, вместо этого:
вы можете сделать это:
Теперь, если вы сравниваете действительно длинную строку, у вас все еще могут быть проблемы с ситуацией пейджера, которую вы первоначально описали, и которая была решена, по-видимому, к удовлетворению, в других ответах. Надеюсь, это даст вам новый инструмент, хотя, чтобы более легко определить, что на линии изменилось.
чтобы использовать меньше в качестве пейджера и сделать перенос линии постоянным, вы можете просто включить опцию fold-long-lines:
git config --global core.pager 'less -+S'таким образом, вам не придется вводить его при использовании меньше.
Ура
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 является значением по умолчанию
восемь лет спустя я нахожу превосходный ответ, от 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", и он показывает несколько страниц(вы видите": "в конце страницы), в этом случае вы можете ввести"- 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