Как сравнить два файла не в репо с помощью git

114

Я хотел бы сравнить два файла css, которых нет ни в одном репозитории git. Есть ли в git такой функционал?

Седрик Райхенбах
источник
Что, если бы я хотел использовать, скажем, --patienceфлаг? Вы знаете, что такое diff (1) ?
SamB 05
Вы должны принять ответ Кайла Бертона.
BrodieG 05
связанные: stackoverflow.com/questions/855767/…
slm

Ответы:

215

gitdiff более функциональна, чем стандартный unix diff. Я часто хочу это делать, и, поскольку этот вопрос высоко ценится в Google, я хочу, чтобы появился этот ответ.

Этот вопрос: как использовать git diff --color-wordsвне репозитория Git?

Показывает, как использовать git для сравнения файлов, в которых хотя бы один из них отсутствует в репозитории, используя --no-index:

git diff --no-index file1.txt file2.txt

Неважно, какой из них отслеживается git, а какой нет - один или оба могут не отслеживаться, например:

$ date > x
$ sleep 2
$ date > y
$ git diff --color-words --no-index x y
diff --git a/x b/y
index 6b10c7c..70f036c 100644
--- a/x
+++ a/y
@@ -1 + 1 @@
Wed Jun 10 10:57:45|10:57:47 EDT 2013

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

Кайл Бертон
источник
14
Если вы хотите, чтобы это поведение использовалось по умолчанию, вы можете добавить псевдоним к своему .bashrcфайлу (или тому, что вы используете):alias diff="git diff --no-index"
counterbeing
1
К вашему сведению: в Git для Windows была ошибка (№ 2123), из-за которой "--no-index" не соблюдался. Это было исправлено в Git для Windows v2.21.0 (26 февраля 2019 г.).
StackzOfZtuff
Что означает строка "index 6b10c7c..70f036c 100644"? Я сравниваю 2 бинарных файла, они различаются, но это единственная строка с разницей ...
Лукас Салич
привет @LukasSalich, похоже, этот формат строки может быть задокументирован git (например: git-scm.com/docs/diff-format ) git diff не пытается различать двоичные файлы afaik, поэтому я предполагаю, что эта строка означает, что они различаются , два SHA, в которых было обнаружено изменение, а затем права доступа к файлу.
Кайл Бертон
3

diff -u

даст аналогичный унифицированный вывод контекста для git diff.

Джеймс
источник
1
Однако он не умеет красиво раскрашивать или использовать пейджер.
Xiong Chiamiov
Это также не позволяет использовать красивое слово diff ( git diff --word-diff).
Стефан ван ден Аккер
0

Просто используйте команду diff:

diff file1.ext file2.ext
Эдвардмп
источник
2
Хм, я пробовал это, но, на мой взгляд, результат был просто чепухой ... Может, я ошибался ...
Седрик Райхенбах
вы можете запустить какой-нибудь инструмент с графическим интерфейсом, который обеспечит лучший обзор, например, gvimdiff, kompare или аналогичный
Юджин Сажин