Я запускаю git-diff для файла, но изменение находится в конце длинной строки.
Если я использую клавиши курсора для перемещения вправо, он теряет цветовое кодирование - и, что еще хуже, линии не выстраиваются в линию - усложняя отслеживание изменений.
Есть ли способ предотвратить эту проблему или просто сделать перенос строк?
Я запускаю Git 1.5.5 через mingw32.
git diff --color-words | fold
fold
но он удаляет цвет. Поскольку вы указываете,--color-words
я предполагаю, что вам удалось передать цветаfold
. Как?Ответы:
Отображение вывода
git diff
обрабатывается любым используемым вами пейджером.Обычно под Linux,
less
будет использоваться.Вы можете указать git использовать другой пейджер, установив
GIT_PAGER
переменную окружения. Если вы не возражаете против пейджинга (например, ваш терминал позволяет вам прокручивать назад), вы можете явно установитьGIT_PAGER
пустое значение, чтобы остановить его, используя пейджер. Под Linux:Без пейджера строки будут перенесены.
Если ваш терминал не поддерживает цветной вывод, вы также можете отключить его, используя либо
--no-color
аргумент, либо поместив запись в раздел цвета вашего файла конфигурации git.источник
Или, если вы используете меньше как пейджер по умолчанию, просто введите
-S
при просмотре различий в включаемую упаковку в меньше.источник
--word-diff
чтобы увидеть цветовую подсветку измененных слов--word-diff
часть заслуживает того, чтобы иметь свой собственный ответ на этот вопрос, так как мне кажется, что я многое делаю, чтобы помочь решить основную проблему: выяснить, что изменилось на длинной линии. Итак, я сделал это один: stackoverflow.com/a/19253759/313756-S
с большой буквы, а не-s
. Меньше отображает сообщение «Fold long lines (нажмите RETURN)» внизу после ввода текста-S
, а затем нажатие «Return» включает перенос.Вы также можете использовать,
git config
чтобы настроить пейджер для упаковки.Устанавливает настройку пейджера для текущего проекта.
Устанавливает пейджер глобально для всех проектов
источник
git config --global core.pager "less -r"
man less
,-r
ничего не говорит об упаковке.С полным уважением к Джошу Дилу в комментарии к этому ответу , я, тем не менее, чувствую, что это должен быть ответ сам по себе, поэтому добавлю его:
Один из способов справиться с различиями в длинных строках - использовать разностный текст. Это можно сделать с помощью:
В этом случае вы получите значительно отличающийся вывод diff, который показывает вам, что конкретно изменилось в строке.
Например, вместо того, чтобы получить что-то вроде этого:
Вы можете получить что-то вроде этого:
Или с раскрашиванием вместо этого:
Вы можете получить это:
Теперь, если вы сравниваете действительно длинную строку, у вас все еще могут быть проблемы с пейджерной ситуацией, которую вы первоначально описали, и которая была адресована, очевидно, к удовлетворению, в других ответах. Надеемся, что это даст вам новый инструмент, чтобы легче было определить, что на линии изменилось.
источник
--word-diff
:color
,plain
, иporcelain
. Кроме того, можно изменить регулярное выражение для границ слова с помощью--word-diff-regex
. По умолчанию кажется\S+
. ( v2.1.1 )--color-words
выглядит кратко--word-diff=color
, что хорошо, когда вы просто просматриваете diff, а не делитесь им.--word-diff=porcelain
лучше, чем--word-diff
потому,porcelain
что выстроить изменения будут в отдельных строках, тогда--word-diff
как изменения будут внесены в строку . Отдельные линии позволяют вам видеть различия легче, когда различия неуловимы.Чтобы использовать меньше как пейджер и сделать перенос строк постоянным, вы можете просто включить опцию сгиба длинных линий:
Таким образом, вам не нужно вводить его при использовании меньше.
ура
источник
git config --global core.pager 'less -S
Просто погуглил этот.
GIT_PAGER='less -r'
работает для меняисточник
less -R
(На самом деле, я используюless -eiFRSX
, что также решает проблемы с цветом иMac OSX: Ни один из других ответов, кроме чьего-либо 45 '-S', пока работает меньше, мне не помог. Чтобы сделать перенос слов постоянным, потребовалось следующее:
источник
-+$LESS
делает параметр? Если git не определяет это, моя переменная окружения LESS даже не установлена.$LESS
устанавливается какое-то значение (например, a.login
или a.profile
или что-то), и эта опция, я думаю, просто добавляет значения по умолчанию, а затем добавляет их-FRX
поверх.$LESS
не определено.Начиная с Git 1.5.3 ( сентябрь 2007 г. )
--no-pager
опция была доступна.Как я могу запретить git diff использовать пейджер?
пример
Начиная с версии 2.1, по умолчанию используется перенос
Примечания к выпуску Git v2.1
источник
Восемь лет спустя я нахожу превосходный ответ от /superuser/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :
Теперь вы перенаправляете git diff через сгиб, а затем на меньшее: обернуто, правильная меньшая высота страницы, сохраняйте подсветку синтаксиса.
источник
Когда вы используете «git diff», и он показывает несколько страниц (вы видите «:» в конце страницы), в этом случае вы можете набрать «-S» и нажать Enter (S должно быть заглавной). это переключит сгибы длинных линий.
источник
Никто не указал на это до сих пор. Его довольно просто запомнить, и в конфиге git не нужно выполнять никаких дополнительных настроек.
источник
git diff --color | less -FR
для небольших изменений, когда не нужно прокручиватьВы можете просто направить вывод git diff к следующему:
источник
Не идеальное решение, но
gitk
иgit-gui
может показывать эту информацию, и иметь полосы прокрутки.источник
перечислите текущую / стандартную конфигурацию:
затем обновите и пропустите -S как:
-S: заставляет линии, длина которых превышает ширину экрана, обрезаться, а не складываться.
источник
Когда возникают проблемы, я часто прибегаю к DiffMerge. Отличный инструмент сравнения, который имеет встроенную подсветку. Также в последних версиях добавлен режим горизонтального режима.
Однако я не смог настроить git для его использования. Так что мне нужно сначала обойти, чтобы получить обе версии файла.
источник