📜 git diff можно использовать вне Git Repo, и у него есть полезные функции

Разница git diff и diff

by itisgood

Это кросс-операционная совместимая утилита для диффузии с такими замечательными возможностями, как отображение разницы отдельных символов или директорий.

Версии diff для GNU и OpenBSD (macOS) имеют разные флаги и возможности.

Технически вы можете установить GNU-версию diff на macOS, но если у вас уже установлен git, вы можете использовать git diff, даже если вам нужно продифференцировать файлы, не отслеживаемые git!

Допустим, вы хотите сравнить 2 файла, не находящиеся в git, вы можете сделать следующее:

git diff --no-index -- file_a file_b

Вот и всё, флаг –no-index позволяет сравнить два пути и даёт git’у понять, что они не являются коммитом или ссылкой на git.

Дальше всё становится ещё проще.

Если пути существуют в каталоге, который не отслеживается git’ом, вы можете упростить команду до git diff file_a file_b.

Но зачем использовать git diff, если можно использовать diff?

Это зависит от ситуации.

В переносимых скриптах я буду использовать diff, но есть случаи, когда, если я знаю, что git установлен, и хочу сделать определённые вещи, я буду использовать git diff.

Вот пара примеров.

Полезные особенности git diff и diff

Помимо кросс-операционной совместимости, у git diff есть несколько полезных возможностей. Это далеко не все из них, но вот две, которые я использую время от времени.

Сравнение каталогов

Я добавил несколько примеров файлов в каталог:

/home/nick/src/tutorials/git-diff-tips
├── a
│   ├── 1
│   └── 2
└── b
    ├── 1
    ├── 2
    └── 3

2 directories, 5 files

Затем я использовал разную заглавную букву в словах:

$ git diff ~/src/tutorials/git-diff/a ~/src/tutorials/git-diff/b

diff --git a/home/nick/src/tutorials/git-diff/a/1 b/home/nick/src/tutorials/git-diff/b/1
index 5626abf..3609f20 100644
--- a/home/nick/src/tutorials/git-diff/a/1
+++ b/home/nick/src/tutorials/git-diff/b/1
@@ -1 +1 @@
-one
+One
diff --git a/home/nick/src/tutorials/git-diff/a/2 b/home/nick/src/tutorials/git-diff/b/2
index f719efd..3b0086f 100644
--- a/home/nick/src/tutorials/git-diff/a/2
+++ b/home/nick/src/tutorials/git-diff/b/2
@@ -1 +1 @@
-two
+Two
diff --git a/home/nick/src/tutorials/git-diff/b/3 b/home/nick/src/tutorials/git-diff/b/3
new file mode 100644
index 0000000..b2cde18
--- /dev/null
+++ b/home/nick/src/tutorials/git-diff/b/3
@@ -0,0 +1 @@
+Three

Различия по символам

Иногда удобно видеть выделения для каждого добавленного или удаленного символа, вместо того чтобы видеть, как меняется вся строка из-за одного символа.

# --color-words can take in a regex, in this case we say all characters are treated as words.$ git diff --color-words=. file_a file_b

Вот результаты выполнения аналогичной команды в скрипте обновления.

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

Новый заголовок CSV и новые запятые окрашены в зеленый цвет.

см. также:

 

Loading

You may also like

Leave a Comment