Можно ли использовать git diff 2 строки?

У меня есть 2 строки, и я хочу, чтобы между ними была разница git. Я мог бы создать файл1 и добавить строку1 в качестве его содержимого.

Затем я мог бы создать файл2 и добавить строку2 в качестве его содержимого. Тогда я мог бы git diff file1 и file2.

Однако, учитывая, что у меня есть строки как строки (а не как содержимое файла), могу ли я избежать этих длинных шагов? Есть способ попроще?

Что-то вроде:

git diff "my first string" "my second string" # obviously does not work

person danday74    schedule 24.08.2017    source источник
comment
Зачем вам использовать для этого git? Строка однострочная или многострочная?   -  person Sami Kuhmonen    schedule 24.08.2017


Ответы (3)


Если вы настаиваете на мерзком способе,

git diff $(echo "my first string" | git hash-object -w --stdin) $(echo "my second string" | git hash-object -w --stdin)  --word-diff
person ElpieKay    schedule 24.08.2017
comment
как мне обрабатывать символы новой строки? Я пробовал \ n, но без радости - спасибо - нужно работать для windows и linux - person danday74; 24.08.2017
comment
@ danday74 Плюс -e после echo. - person ElpieKay; 24.08.2017

Для этого не обязательно использовать git diff, Git используется для отслеживания изменений в вашей кодовой базе.

Для этого есть хорошая команда linux

diff  <(echo "my first string" ) <(echo "my second string")

Это хороший ответ https://stackoverflow.com/a/454549/4620609

person Samuel Robert    schedule 24.08.2017
comment
Есть ли аналог этого в Windows? Кажется, я не могу заставить принятый ответ работать. - person tjwrona1992; 03.10.2017
comment
Используйте любой инструмент сравнения, доступный в Windows ... Я не использую окна - person Samuel Robert; 03.10.2017
comment
git diff намного более эффективен, чем простой diff. - person Tgr; 28.11.2019

На уровне реализации, я полагаю, git diff используйте определенную утилиту diff (например, diff) для создания патча и перенаправления на пейджер (по умолчанию less) для просмотра. Таким образом, вам не нужно вызывать git diff для сравнения двух строк.

Если вы хотите, чтобы формат файла патча выводился git diff, текущая команда будет полезной.

diff -u <(echo "my first string" ) <(echo "my second string")

-u добавляется, чтобы сообщить diff о необходимости вывода патча с унифицированным контекстом.

Между прочим, git предоставляет элемент конфигурации diff.external, позволяющий генерировать diff не с помощью внутреннего механизма сравнения, а с помощью данной команды. переменная окружения GIT_EXTERNAL_DIFF имеет тот же эффект.

person gzh    schedule 24.08.2017