Мне нравится форматирование вывода git diff
. Цвет и +
/ / -
представление изменений между строками легче читать, чем GNU diff.
Я могу git diff
использовать --no-index
флаг за пределами git-репо, и он работает нормально. Однако, по-видимому, отсутствует --exclude
опция для исключения файлов или подкаталогов из рекурсии diff
.
Есть ли способ получить лучшее из обоих миров? (параметры цвета и +
/ -
формат git diff
и --exclude
опция GNU diff).
Я экспериментировал с colordiff
, но я все еще предпочитаю выходной форматgit diff
newtext
на/etc/colordiff
. Я думаю, что Git использует зеленый?Ответы:
Я не знаю, как сделать цвет, но это будет делать,
+/-
а не<
и>
.источник
diff -u file1 file2 | tig
.colordiff
из своего репозитория apt / yum / pacman и используйте его.colordiff
: docs.aws.amazon.com/AWSEC2/latest/UserGuide/…colordiff
, вы также можете получить цвет сvim
помощью определенияcdiff() { diff -u $@ | vim -R -; }
.Вы также можете использовать
git diff --no-index -- A B
(через manpage ).источник
A
иB
отличаются по сравнению с друг с другом вместо того , где каждый файл был изменен , по сравнению с их последней соответствующей ревизии.git diff --no-index
это здорово, но, как указал OP, у него нет--exclude
флага, поэтому он часто очень ограничен в полезности.Установите colordiff .
Обновите ваш ~ / .colordiffrc (сначала скопируйте / etc / colordiffrc, если необходимо):
Используйте
colordiff -u file1 file2
для двух файлов илиcolordiff -ruN path1 path2
для рекурсивного сравнения путей.Это не совсем то же самое, но это очень близко.
источник
Это то, что я предлагаю, и это довольно близко
colordiff
: Вам придется установить этоbrew install colordiff
на моем Mac.port install colordiff
на некоторых Mac.sudo apt-get install colordiff
на Debian или Ubuntu-R
: это говорит Меньше показывать цвета вместо необработанных кодов.Я в конечном итоге использовал,
-w
потому что я не хотел видеть различия пробелов.Редактировать: как предложено @Ciprian Tomoiaga в комментарии, вы можете сделать это функцией и поместить ее в свой
~/.bashrc
файл тоже.источник
function gdiff () { diff -u $@ | colordiff | less -R; }
GNU
diff
имеет--color
опцию начиная с версии 3.4 в конце 2016 года согласно этому ответу на Unix SE. Этого-u
должно быть достаточно, чтобы имитировать выводgit diff
:diff -u --color=always file1 file2 | less -r
--color
должен бытьalways
при использовании в трубе,auto
будет выключать цвет в трубах.Я только попробовал это с Git Bash на Windows, где
less -R
бы только закрасить первую строку ломоть.less -r
исправил это для меня в этом случае.источник
Используя только
bash
,diff
,tput
, иless
, мы можем тесно приблизить выходgit diff
. Однако будут некоторые заметные различия из-за близорукостиdiff
программистов.Поместите следующее определение функции Bash в какой-то файл, который автоматически создается вашей учетной записью пользователя, и вы сможете получить доступ к функции из командной строки:
Эта функция работает следующим образом:
diff
вызывается с различными вариантами форматирования, чтобы указать, как будут отображаться изменения в файлах.tput
используется для вставки цветовых кодов ANSI в эти параметры форматирования. Обратите внимание, что при использовании не-ANSI терминалов вам, возможно, придется заменитьtput setaf
наtput setf
.diff
конвейеруless
.-R
позволяет сохранять цвета ANSI.-X
предотвращаетless
очистку экрана при выходе.-F
не позволяетless
работать как пейджер, если вывод помещается в пределах одного экрана.@full
, функция отобразит все неизмененные строки в дополнение к добавленным и удаленным строкам.Обратите внимание на следующие различия между этим подходом и
git diff
:git diff
сообщает о трех строках контекста, окружающих каждое изменение. К сожалению,diff
кажется, что вы жалуетесь и выходите, если вы хотите указать количество строк контекста и одновременно указать параметры форматирования. (По крайней мере, в Mac OS X Yosemite). Спасибоdiff
программистам. Следовательно, вы можете либо запросить отсутствие строк контекста, окружающих каждое изменение, что является поведением по умолчанию, либо вы можете запросить, чтобы также сообщалось обо всех неизмененных строках в файле, указав@full
в качестве первого параметра.git diff
номеров строк, сообщаемых этой функцией, они также будут отличаться от номеров строк, о которых сообщаетgit diff
.git diff
справляется с этим лучше, с точки зрения контекста. Вы можете попробовать передать различные варианты, чтобыdiff
лучше справляться с пробелами, если хотите.источник
Вы ищете
colordiff
:источник
Поместите это в свой
.bashrc
или.zshrc
:diff() { git diff --no-index "$1" "$2" | colordiff; }
Требования:
git
иcolordiff
должны быть установлены заранее.использование :
diff file1 file2
пример: за $
diff .tmux.conf .zshrc.pre-oh-my-zsh
источник
Другой вариант - сделать это снаружи репозитория, чтобы git знал разницу между файлами. например. функция оболочки что-то вроде:
источник
Используйте colordiff :
Монтаж:
Использование:
Дает точно такую же разницу, как показано
git diff
.источник
Если у вас нет
colordiff
илиgit diff
, вы можете получить цвет поvim
.или просто
источник
Так как у летучей мыши есть хорошая окраска, я проверил, работает ли она с этим
diff
тоже, и удивительно, что это работало действительно хорошо из коробки.$ diff file1 file2 | bat
или$ diff -u file1 file2 | bat
Итак, я полагаю, что вы могли бы сделать такую функцию ниже, чтобы быть более эффективной:
источник
Протестировано в Debian 9
diff -u --color=always file1 file2
источник
Я думаю настройки конфига:
в сочетании с
--relative=<path>
опцией «diff» команда будет делать то, что вы хотели. Ты пробовал ?источник
git
. Он спрашивал о параметрахdiff
программы