Поиск…


Синтаксис

  • git diff [options] [<commit>] [--] [<path>…​]
  • git diff [options] --cached [<commit>] [--] [<path>…​]
  • git diff [options] <commit> <commit> [--] [<path>…​]
  • git diff [options] <blob> <blob>
  • git diff [options] [--no-index] [--] <path> <path>

параметры

параметр подробности
-p, -u, --patch Создание патча
-s, -no-patch Подавление разностного выхода. Полезно для таких команд, как git show которые показывают патч по умолчанию, или для отмены эффекта --patch
--raw Создать diff в необработанном формате
--diff-алгоритм = Выберите алгоритм дифференциала. myers следующие варианты: myers , minimal , patience , histogram
--резюме Выведите сжатое резюме расширенной информации заголовка, например, создания, переименования и изменения режима
--name только Показывать только имена измененных файлов
--name-статус Показать имена и статусы измененных файлов Наиболее распространенными статусами являются M (Модифицировано), A (Добавлено) и D (Удалено)
--проверять Предупреждать, если изменения вводят маркеры конфликтов или ошибки пробелов. То, что считается ошибочными ошибками, управляется конфигурацией core.whitespace . По умолчанию заглавные пробелы (включая строки, состоящие исключительно из пробелов) и пробельный символ, который сразу же следует за символом табуляции внутри начального отступа строки, считаются пробельными ошибками. Выходы с ненулевым статусом при обнаружении проблем. Не совместим с --exit-кодом
--full индекс Вместо первых нескольких символов, покажите полные имена объектов до и после изображения в строке «индекс» при генерации выходного файла патча
--binary В дополнение к --full-index вывести двоичную разницу, которая может применяться с применением git apply
-текст Относитесь ко всем файлам в виде текста.
--цвет Установите цветной режим; т.е. используйте --color=always если вы хотите направить diff на меньшее и сохранить окраску git

Показать отличия в рабочей ветви

git diff

Это покажет неустановленные изменения в текущей ветке от фиксации до нее. Он будет показывать только изменения относительно индекса, то есть показывает, что вы можете добавить к следующему фиксации, но не имеет. Чтобы добавить (этап) эти изменения, вы можете использовать git add .

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

Показать различия для поэтапных файлов

git diff --staged

Это покажет изменения между предыдущим фиксацией и текущими поэтапными файлами.

ПРИМЕЧАНИЕ. Вы также можете использовать следующие команды, чтобы выполнить одно и то же:

git diff --cached

Это всего лишь синоним для --staged или

git status -v

Это вызовет подробные настройки команды status .

Показать как поэтапные, так и неустановленные изменения

Чтобы показать все поэтапные и неустановленные изменения, используйте:

git diff HEAD

ПРИМЕЧАНИЕ. Вы также можете использовать следующую команду:

git status -vv

Разница заключается в том, что вывод последнего фактически скажет вам, какие изменения были поставлены для фиксации, а какие нет.

Показать изменения между двумя коммитами

git diff 1234abc..6789def    # old   new

Например: Покажите изменения, внесенные в последние 3 фиксации:

git diff @~3..@    # HEAD -3   HEAD

Примечание: две точки (..) являются необязательными, но добавляются четкость.

Это покажет текстовую разницу между коммитами, независимо от того, где они находятся в дереве.

Использование meld для просмотра всех изменений в рабочем каталоге

git difftool -t meld --dir-diff

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

git difftool -t meld --dir-diff  [COMMIT_A] [COMMIT_B]

покажет различия между двумя конкретными коммитами.

Показать отличия для определенного файла или каталога

git diff myfile.txt

Показывает изменения между предыдущим фиксацией указанного файла ( myfile.txt ) и локально модифицированной версией, которая еще не была поставлена.

Это также работает для каталогов:

git diff documentation

Вышеприведенное показывает изменения между предыдущим фиксацией всех файлов в указанном каталоге ( documentation/ ) и локально модифицированными версиями этих файлов, которые еще не были поставлены.

Чтобы показать разницу между некоторой версией файла в данной фиксации и локальной версией HEAD вы можете указать фиксацию, которую хотите сравнить:

git diff 27fa75e myfile.txt

Или если вы хотите увидеть версию между двумя отдельными коммитами:

git diff 27fa75e ada9b57 myfile.txt

Чтобы показать разницу между версией, указанной хешей ada9b57 и последней фиксацией на ветке my_branchname только для относительного каталога с именем my_changed_directory/ вы можете сделать это:

git diff ada9b57 my_branchname my_changed_directory/

Просмотр слова-diff для длинных строк

git diff [HEAD|--staged...] --word-diff

Вместо того, чтобы отображать строки, это будет отображать различия в строках. Например, вместо:

-Hello world
+Hello world!

Если вся строка помечена как измененная, word-diff изменяет вывод на:

Hello [-world-]{+world!+}

Вы можете опустить маркеры [- , -] , {+ , +} , указав --word-diff=color или --color-words . Для обозначения различия используется только цветовое кодирование:

Пример использования git diff -color-words

Просмотр трехстороннего слияния, включая общего предка

git config --global merge.conflictstyle diff3

Устанавливает стиль diff3 по умолчанию: вместо обычного формата в конфликтующих разделах, показывающий два файла:

<<<<<<< HEAD
left
=======
right
>>>>>>> master

он будет включать дополнительный раздел, содержащий исходный текст (исходящий из общего предка):

<<<<<<< HEAD
first
second
||||||| 
first
=======
last
>>>>>>> master

Этот формат упрощает понимание конфликта слиянием, т. Е. в этом случае добавляется локально second , а удаленное изменение first до last , разрешая:

last
second

Такое же разрешение было бы намного сложнее использовать по умолчанию:

<<<<<<< HEAD
first
second
=======
last
>>>>>>> master

Покажите разницу между текущей версией и последней версией

git diff HEAD^ HEAD

Это покажет изменения между предыдущей фиксацией и текущей фиксацией.

Diff UTF-16 закодированные текстовые и двоичные файлы plist

Вы можете различать кодированные файлы UTF-16 (файлы строк локализации os iOS и macOS являются примерами), указав, как git должен различать эти файлы.

Добавьте в файл ~/.gitconfig .

[diff "utf16"]
textconv = "iconv -f utf-16 -t utf-8"

iconv - программа для преобразования различных кодировок .

Затем отредактируйте или создайте файл .gitattributes в корне репозитория, где вы хотите его использовать. Или просто редактируйте ~/.gitattributes .

*.strings diff=utf16

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

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

Для двоичных файлов .gitconfig вы редактируете .gitconfig

[diff "plist"]
textconv = plutil -convert xml1 -o -

и .gitattributes

*.plist diff=plist

Сравнение ветвей

Покажите изменения между кончиками new и концом original :

git diff original new     # equivalent to original..new

Показать все изменения на new так как он разветвлен от original :

git diff original...new     # equivalent to $(git merge-base original new)..new

Использование только одного параметра, такого как

git diff original

эквивалентно

git diff original..HEAD

Показать изменения между двумя ветвями

git diff branch1..branch2

Создайте совместимую с патчем diff

Иногда вам просто нужен diff для применения с использованием патча. Обычный git --diff не работает. Попробуйте это вместо этого:

git diff --no-prefix > some_file.patch

Затем в другом месте вы можете изменить его:

patch -p0 < some_file.patch

разница между двумя фиксацией или ветвью

Чтобы просмотреть разницу между двумя ветвями

git diff <branch1>..<branch2>

Чтобы просмотреть разницу между двумя ветвями

git diff <commitId1>..<commitId2>

Чтобы просмотреть diff с текущей ветвью

git diff <branch/commitId>

Чтобы просмотреть сводку изменений

git diff --stat <branch/commitId>

Просмотр файлов, которые были изменены после определенного фиксации

git diff --name-only <commitId>

Просмотр файлов, отличных от ветви

git diff --name-only <branchName>

Просмотр файлов, которые были изменены в папке после определенного фиксации

git diff --name-only <commitId> <folder_path>


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow