Як порівняти два файли, які не знаходяться в репо, використовуючи git


114

Я хотів би порівняти два файли css, які відсутні в жодному репозиторії git. Чи є така функціональність у git?


Що робити, якщо я хотів використати, скажімо, --patienceпрапор? Чи знаєте ви відмінності (1), яка може це зробити?
SamB

Ви повинні прийняти відповідь Кайла Бертона.
BrodieG

Відповіді:


214

git's diff є більш функціональним, ніж стандартний 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
FYI: У Git для Windows з'явилася помилка (# 2123), що "--no-index" не дотримувалася. Це було виправлено у Git для Windows v2.21.0 (26 лютого 2019 року).
StackzOfZtuff

Що означає рядок "індекс 6b10c7c..70f036c 100644"? Я порівнюю 2 двійкові файли, вони різняться, але це єдиний ряд із різницею ...
Лукаш

привіт @LukasSalich, схоже, що формат рядка може бути задокументований git (наприклад: git-scm.com/docs/diff-format ) , два SHA, де були визначені зміни, а потім права доступу до файлу.
Кайл Бертон

3

diff -u

дасть аналогічний уніфікований контекстний вихід до git's diff.


1
Однак це не робить приємного забарвлення або використання пейджера.
Xiong Chiamiov

Це не дозволяє приємне слово розм. Або ( git diff --word-diff).
Стефан ван ден Аккер

0

Просто використовуйте команду diff:

diff file1.ext file2.ext

2
Добре, я спробував це, але, на мій погляд, вихід був просто дурницею ... Можливо, я помилився ...
Седрік Райхенбах

ви можете запустити якийсь інструмент GUI, який забезпечить кращий перегляд, наприклад, gvimdiff, kompare або подібне
Eugene Sajine
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.