українська мова ▾ Topics ▾ Latest version ▾ git-diff last updated in 2.52.0

НАЗВА

git-diff - Показати зміни між коммітами, комітом та робочим деревом тощо

СИНОПСИС

git diff [<options>] [<commit>] [--] [<path>…​]
git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>…​]
git diff [<options>] [--merge-base] <commit> [<commit>…​] <commit> [--] [<path>…​]
git diff [<options>] <commit>...<commit> [--] [<path>…​]
git diff [<options>] <blob> <blob>
git diff [<options>] --no-index [--] <path> <path> [<pathspec>…​]

ОПИС

Відображати зміни між робочим деревом та індексом або деревом, зміни між індексом та деревом, зміни між двома деревами, зміни, що виникають в результаті злиття, зміни між двома blob-об’єктами або зміни між двома файлами на диску.

git diff [<options>] [--] [<path>...]

Ця форма призначена для перегляду змін, які ви внесли відносно індексу (область проміжного зберігання для наступного коміту). Іншими словами, відмінності – це те, що ви могли б_ сказати Git додати до індексу, але досі цього не зробили. Ви можете проміжним способом додати ці зміни, використовуючи git-add[1].

git diff [<options>] --no-index [--] <path> <path> [<pathspec>...]

Ця форма призначена для порівняння двох заданих шляхів у файловій системі. Ви можете пропустити опцію --no-index, якщо ви виконуєте команду в робочому дереві, контрольованому Git, і принаймні один зі шляхів вказує за межі робочого дерева, або якщо ви виконуєте команду за межами робочого дерева, контрольованого Git. Ця форма передбачає --exit-code. Якщо обидва шляхи вказують на каталоги, можна надати додаткові специфікації шляхів. Вони обмежать файли, що входять до різниці. Усі такі специфікації шляхів мають бути відносними, оскільки вони застосовуються до обох сторін різниці.

git diff [<options>] --cached [--merge-base] [<commit>] [--] [<path>...]

Ця форма призначена для перегляду змін, які ви проіндексували для наступного коміту відносно названого <commit>. Зазвичай вам потрібно порівняти їх з останнім комітом, тому, якщо ви не вкажете <commit>, за замовчуванням використовується значення HEAD. Якщо HEAD не існує (наприклад, ненароджені гілки) і <commit> не вказано, буде показано всі проіндексовані зміни. --staged є синонімом --cached.

Якщо вказано --merge-base, замість використання <commit> використовується база злиття <commit> та HEAD. git diff --cached --merge-base A еквівалентно git diff --cached $(git merge-base A HEAD).

git diff [<options>] [--merge-base] <commit> [--] [<path>...]

Ця форма призначена для перегляду змін у вашому робочому дереві відносно названого <commit>. Ви можете використовувати HEAD для порівняння його з останнім комітом або назву гілки для порівняння з кінчиком іншої гілки.

Якщо вказано --merge-base, замість використання <commit> використовується база злиття <commit> та HEAD. git diff --merge-base A еквівалентно git diff $(git merge-base A HEAD).

git diff [<options>] [--merge-base] <commit> <commit> [--] [<path>...]

Це для перегляду змін між двома довільними <commit>.

Якщо вказано --merge-base, використовувати базу злиття двох комітів для сторони "до". git diff --merge-base A B еквівалентно git diff $(git merge-base A B) B.

git diff [<options>] <commit> <commit>...<commit> [--] [<path>...]

Ця форма призначена для перегляду результатів коміту злиття. Перший у списку <commit> має бути самим комітом злиття; решта два або більше комітів повинні бути його батьківськими. Зручними способами створення бажаного набору ревізій є використання суфіксів @ та ^!. Якщо A є комітом злиття, то git diff A A^@, git diff A^! та git show A дають однакову комбіновану різницю.

git diff [<options>] <commit>..<commit> [--] [<path>...]

Це синонім попередньої форми (без ..) для перегляду змін між двома довільними <commit>. Якщо <commit> з одного боку пропустити, це матиме той самий ефект, що й використання HEAD замість цього.

git diff [<options>] <commit>...<commit> [--] [<path>...]

Ця форма призначена для перегляду змін у гілці, що містить <commit> і аж до другого <commit>, починаючи зі спільного предка обох <commit>. git diff A...B еквівалентно git diff $(git merge-base A B) B. Ви можете пропустити будь-який з <commit>, що матиме той самий ефект, що й використання HEAD.

Якщо ви робите щось екзотичне, слід зазначити, що всі <commit> у наведеному вище описі, за винятком випадку --merge-base та двох останніх форм, які використовують нотації .., можуть бути будь-якими <tree>. Дерево, що нас цікавить, це те, на яке вказує посилання з назвою AUTO_MERGE, яке записується стратегією злиття ort після виникнення конфліктів злиття (див. git-merge[1]). Порівняння робочого дерева з AUTO_MERGE показує зміни, які ви внесли до цього часу для вирішення текстових конфліктів (див. приклади нижче).

Для отримання повнішого списку способів написання <commit> див. розділ "ВИЗНАЧЕННЯ РЕВІЗІЙ" у gitrevisions[7]. Однак, diff стосується порівняння двох кінцевих точок, а не діапазонів, а позначення діапазонів (<commit>..<commit> та <commit>...<commit>) не означають діапазон, як визначено в розділі "ВИЗНАЧЕННЯ ДІАПАЗОНІВ" у gitrevisions[7].

git diff [<options>] <blob> <blob>

Ця форма призначена для перегляду відмінностей між необробленим вмістом двох blob-об’єктів.

ОПЦІЇ

-p
-u
--patch

Згенерувати патч (див. Генерація тексту патча за допомогою -p). Це значення за замовчуванням.

-s
--no-patch

Придушити весь вивід з механізму різниці. Корисно для команд типу git show, які показують патч за замовчуванням, щоб приглушити їхній вивід або скасувати дію опцій типу --patch, --stat, зазначених раніше в командному рядку в псевдонімі.

-U<n>
--unified=<n>

Генерувати різниці з <n> рядками контексту замість звичайних трьох. Implies --patch.

--output=<файл>

Вивід у певний файл замість stdout.

--output-indicator-new=<char>
--output-indicator-old=<char>
--output-indicator-context=<char>

Вкажіть символ, який використовується для позначення нових, старих або контекстних рядків у згенерованому патчі. Зазвичай це +, - та '' відповідно.

--raw

Згенерувати різницю у необробленому форматі.

--patch-with-raw

Синонім до слова -p --raw.

--indent-heuristic

Увімкнути евристику, яка зсуває межі різниці фрагментів, щоб зробити патчі легшими для читання. Це значення за замовчуванням.

--no-indent-heuristic

Вимкнути евристику відступів.

--minimal

Витратьте додатковий час, щоб переконатися, що отримано найменшу можливу різницю.

--patience

Згенеруйте різницю за допомогою алгоритму "різниця терпіння".

--histogram

Згенеруйте різницю за допомогою алгоритму "різниця гістограми".

--anchored=<text>

Згенеруйте різницю за допомогою алгоритму "закріпленої різниці".

Цей параметр можна вказати більше одного разу.

Якщо рядок існує як у джерелі, так і в пункті призначення, існує лише один раз і починається з <текст>, цей алгоритм намагається запобігти його появі як видалення або додавання у виводі. Він внутрішньо використовує алгоритм "різниці терпіння".

--diff-algorithm=(patience|minimal|histogram|myers)

Виберіть алгоритм порівняння. Варіанти такі:

default
myers

Базовий алгоритм жадібного різниці. Наразі це алгоритм за замовчуванням.

minimal

Витратьте додатковий час, щоб переконатися, що отримано найменшу можливу різницю.

patience

Використовуйте алгоритм "різниця терпіння" під час створення патчів.

histogram

Цей алгоритм розширює алгоритм терпіння для «підтримки рідко зустрічаються поширених елементів».

Наприклад, якщо ви налаштували змінну diff.algorithm на значення, відмінне від значення за замовчуванням, і хочете використовувати значення за замовчуванням, тоді вам потрібно використовувати опцію --diff-algorithm=default.

--stat[=<width>[,<name-width>[,<count>]]]

Згенерувати diffstat. За замовчуванням для частини імені файлу буде використано стільки місця, скільки потрібно, а решта – для частини графу. Максимальна ширина за замовчуванням дорівнює ширині терміналу або 80 стовпців, якщо не підключено до терміналу, і може бути перевизначена за допомогою <width>. Ширину частини імені файлу можна обмежити, вказавши іншу ширину <name-width> після коми або встановивши diff.statNameWidth=<name-width>. Ширину частини графу можна обмежити за допомогою --stat-graph-width=<graph-width> або встановивши diff.statGraphWidth=<graph-width>. Використання --stat або --stat-graph-width впливає на всі команди, що генерують графік статистики, тоді як встановлення diff.statNameWidth або diff.statGraphWidth не впливає на git format-patch. Надаючи третій параметр <count>, ви можете обмежити вивід першими рядками <count>, а потім ..., якщо їх більше.

Ці параметри також можна встановити окремо за допомогою --stat-width=<ширина>, --stat-name-width=<ширина-назви> та --stat-count=<кількість>.

--compact-summary

Вивести стислий виклад розширеної інформації заголовка, такої як створення або видалення файлів ("new" або "gone", необов’язково +l, якщо це символічне посилання) та зміни режиму (+x або -x для додавання або видалення виконуваного біта відповідно) у diffstat. Інформація розміщується між частиною імені файлу та частиною графу. Має на увазі --stat.

--numstat

Подібно до --stat, але показує кількість доданих та видалених рядків у десятковому форматі та шлях без скорочень, що робить його зручнішим для машинного обчислення. Для бінарних файлів виводить два - замість 0 0.

--shortstat

Виведіть лише останній рядок формату --stat, що містить загальну кількість змінених файлів, а також кількість доданих та видалених рядків.

-X [<param>,...]
--dirstat[=<param>,...]

Виведіть розподіл відносної кількості змін для кожного підкаталогу. Поведінку --dirstat можна налаштувати, передавши їй список параметрів, розділених комами. Значення за замовчуванням контролюються змінною конфігурації diff.dirstat (див. git-config[1]). Доступні такі параметри:

changes

Обчисліть числа dirstat, підрахувавши рядки, які були видалені з джерела або додані до місця призначення. Це ігнорує кількість чистих переміщень коду у файлі. Іншими словами, перестановка рядків у файлі враховується не так часто, як інші зміни. Це поведінка за замовчуванням, коли не задано параметр.

lines

Обчисліть числа dirstat, виконавши звичайний рядковий аналіз різниці та підсумувавши кількість видалених/доданих рядків. (Для бінарних файлів рахуйте 64-байтові фрагменти, оскільки бінарні файли не мають природного поняття рядків). Це дорожча поведінка --dirstat, ніж поведінка changes, але вона враховує переставлені рядки у файлі так само, як і інші зміни. Отриманий результат узгоджується з тим, що ви отримуєте від інших опцій --*stat.

files

Обчисліть числа dirstat, підрахувавши кількість змінених файлів. Кожен змінений файл враховується однаково в аналізі dirstat. Це найдешевша з точки зору обчислень поведінка --dirstat, оскільки взагалі не потрібно переглядати вміст файлу.

cumulative

Також підраховуйте зміни в дочірньому каталозі для батьківського каталогу. Зверніть увагу, що під час використання cumulative сума відсотків, що повідомляються, може перевищувати 100%. Поведінку за замовчуванням (некумулятивну) можна вказати за допомогою параметра noncumulative.

<limit>

Цілочисельний параметр визначає граничний відсоток (за замовчуванням 3%). Каталоги, що вносять менше змін, ніж цей відсоток, не відображаються у виводі.

Приклад: Наступний код підраховуватиме змінені файли, ігноруючи каталоги з менш ніж 10% від загальної кількості змінених файлів, та накопичуючи кількість дочірніх каталогів у батьківських каталогах: --dirstat=files,10,cumulative.

--cumulative

Синонім до --dirstat=cumulative.

--dirstat-by-file[=<param>,...]

Синонім до --dirstat=files,<param>,....

--summary

Вивести стислий виклад розширеної інформації заголовка, такої як створення, перейменування та зміни режиму.

--patch-with-stat

Синонім до -p --stat.

-z

Коли було використано --raw, --numstat, --name-only або --name-status враховано, не змінюйте шляхи та використовуйте NUL як термінатори вихідних полів.

Без цієї опції шляхи з «незвичайними» символами взяті в лапки, як пояснено для змінної конфігурації core.quotePath (див. git-config[1]).

--name-only

Показувати лише назву кожного зміненого файлу в дереві пост-образів. Назви файлів часто кодуються в UTF-8. Для отримання додаткової інформації див. обговорення кодування на сторінці довідки git-log[1].

--name-status

Показувати лише ім’я(імена) та стан кожного зміненого файлу. Дивіться опис опції --diff-filter щодо значення літер стану. Так само, як і --name-only, імена файлів часто кодуються в UTF-8.

--submodule[=<формат>]

Вкажіть, як відображаються відмінності в підмодулях. При вказівці --submodule=short використовується формат short. Цей формат показує лише назви комітів на початку та в кінці діапазону. Коли вказано --submodule або --submodule=log, використовується формат log. Цей формат відображає коміти в діапазоні, подібно до git-submodule[1] summary. Коли вказано --submodule=diff, використовується формат diff. Цей формат показує вбудовану різницю змін у вмісті підмодуля між діапазоном комітів. За замовчуванням використовується формат diff.submodule або short, якщо параметр конфігурації не встановлено.

--color[=<when>]

Показати кольорову різницю. --color (тобто без =<when>) те саме, що й --color=always. <when> може бути одним із always, never або auto. Це можна змінити за допомогою color.ui та color.diff налаштування конфігурації.

--no-color

Вимкніть кольорову різницю. Це можна використовувати для зміни налаштувань конфігурації. Це те саме, що --color=never.

--color-moved[=<режим>]

Переміщені рядки коду забарвлюються по-різному. Це можна змінити за допомогою параметра конфігурації diff.colorMoved. <режим> за замовчуванням має значення no, якщо опція не вказана та до zebra, якщо вказано опцію без режиму. Режим має бути одним із таких:

no

Переміщені рядки не виділяються.

default

Є синонімом слова «зебра». У майбутньому це може змінитися на більш розумний режим.

plain

Будь-який рядок, доданий в одному місці та видалений в іншому, буде забарвлений за допомогою color.diff.newMoved. Аналогічно, color.diff.oldMoved буде використано для видалених рядків, доданих деінде в різниці. Цей режим виявляє будь-який переміщений рядок, але він не дуже корисний під час перегляду, щоб визначити, чи блок коду був переміщений без перестановки.

blocks

Блоки переміщеного тексту довжиною щонайменше 20 буквено-цифрових символів виявляються жадібно. Виявлені блоки зафарбовуються кольором color.diff.(old|new)Moved. Сусідні блоки неможливо розрізнити.

zebra

Блоки переміщеного тексту виявляються як у режимі blocks. Блоки зафарбовуються кольором color.diff.(old|new)Moved або color.diff.(old|new)MovedAlternative. Зміна між двома кольорами вказує на виявлення нового блоку.

dimmed-zebra

Подібно до zebra, але виконується додаткове затемнення нецікавих частин переміщеного коду. Лінії, що межують з двома суміжними блоками, вважаються цікавими, решта – нецікавими. dimmed_zebra – застарілий синонім.

--no-color-moved

Вимкніть виявлення руху. Це можна використовувати для зміни налаштувань конфігурації. Це те саме, що й --color-moved=no.

--color-moved-ws=<режим>,...

Це налаштовує, як пробіли ігноруються під час виконання виявлення переміщення для --color-moved. Це можна встановити за допомогою параметра конфігурації diff.colorMovedWS. Ці режими можна вказати у вигляді списку, розділеного комами:

no

Не ігноруйте пробіли під час виявлення руху.

ignore-space-at-eol

Ігнорувати зміни пробілів в кінці циклу.

ignore-space-change

Ігнорувати зміни кількості пробілів. Це ігнорує пробіли в кінці рядка та вважає всі інші послідовності з одного або кількох пробілних символів еквівалентними.

ignore-all-space

Ігнорувати пробіли під час порівняння рядків. Це ігнорує відмінності, навіть якщо один рядок має пробіли, а інший їх не має.

allow-indentation-change

Спочатку ігноруйте будь-які пробіли у виявленні переміщення, а потім групуйте переміщені блоки коду в блок, лише якщо зміна пробілів однакова для кожного рядка. Це несумісно з іншими режимами.

--no-color-moved-ws

Не ігноруйте пробіли під час виявлення переміщення. Це можна використовувати для перевизначення налаштувань конфігурації. Це те саме, що --color-moved-ws=no.

--word-diff[=<mode>]

За замовчуванням слова розділяються пробілами; див. --word-diff-regex нижче. <mode> за замовчуванням має значення plain і має бути одним із:

color

Виділяє змінені слова, використовуючи лише кольори. Має на увазі --color.

plain

Показує слова як [-removed-] та {added}. Не намагається екранувати роздільники, якщо вони з’являються у вхідних даних, тому вихід може бути неоднозначним.

porcelain

Використовуйте спеціальний рядковий формат, призначений для використання скриптами. Додані/видалені/незмінені прогони виводяться у звичайному уніфікованому форматі різниці, починаючи з символу +/-/` ` на початку рядка та продовжуючи до кінця рядка. Перехід на новий рядок у вхідних даних позначається тильдою ~ на окремому рядку.

none

Знову вимкнути різницю слів.

Зверніть увагу, що незважаючи на назву першого режиму, колір використовується для виділення змінених частин у всіх режимах, якщо вони ввімкнені.

--word-diff-regex=<регулярний вираз>

Використовуйте <regex>, щоб визначити, що таке слово, замість того, щоб вважати словом рядки, що не є пробілами. Також мається на увазі --word-diff, якщо ця опція ще не була ввімкнена.

Кожен неперекриваючийся збіг <regex> вважається словом. Будь-що між цими збігами вважається пробілом та ігнорується(!) для цілей пошуку відмінностей. Ви можете додати |[^[:space:]] до вашого регулярного виразу, щоб переконатися, що він відповідає всім символам, які не є пробілами. Збіг, що містить символ нового рядка, непомітно обрізається(!) на місці нового рядка.

Наприклад, --word-diff-regex=. трактуватиме кожен символ як слово та, відповідно, показуватиме відмінності посимвольно.

Регулярний вираз також можна встановити за допомогою драйвера різниці або параметра конфігурації, див. gitattributes[5] або git-config[1]. Його явне вказівка перевизначає будь-який драйвер різниці або параметр конфігурації. Драйвери різниці перевизначають параметри конфігурації.

--color-words[=<regex>]

Еквівалентно --word-diff=color плюс (якщо було вказано регулярний вираз) --word-diff-regex=<регулярний вираз>.

--no-renames

Вимкніть виявлення перейменування, навіть якщо у файлі конфігурації це встановлено за замовчуванням.

--[no-]rename-empty

Чи використовувати порожні блоби як джерело перейменування.

--check

Попереджати, якщо зміни призводять до появи маркерів конфлікту або помилок пробілів. Те, що вважається помилками пробілів, контролюється конфігурацією core.whitespace. За замовчуванням, кінцеві пробіли (включно з рядками, що складаються виключно з пробілів) та символ пробілу, за яким одразу йде символ табуляції всередині початкового відступу рядка, вважаються помилками пробілів. Виходить з ненульовим статусом, якщо виявлено проблеми. Несумісно з --exit-code.

--ws-error-highlight=<kind>

Виділяє помилки пробілів у рядках context, old або new різниці. Кілька значень розділяються комами, none скидає попередні значення, default скидає список до new, а all – це скорочення від old,new,context. Якщо цей параметр не вказано, а змінна конфігурації diff.wsErrorHighlight не встановлена, виділяються лише помилки пробілів у рядках new. Помилки пробілів забарвлюються за допомогою color.diff.whitespace.

--full-index

Замість перших кількох символів, відображати повні назви об’єктів blob до та після зображення в рядку "index" під час створення виводу у форматі патча.

--binary

Окрім --full-index, виведіть бінарний diff, який можна застосувати за допомогою git-apply. Implies --patch.

--abbrev[=<n>]

Замість відображення повної 40-байтової шістнадцяткової назви об’єкта у вивідному форматі diff-raw та рядках заголовків diff-tree, відображайте найкоротший префікс довжиною щонайменше <n> шістнадцяткових цифр, який унікально посилається на об’єкт. У вивідному форматі diff-patch --full-index має вищий пріоритет, тобто якщо вказано --full-index, будуть відображатися повні назви блобів незалежно від --abbrev. Кількість цифр, відмінну від стандартної, можна вказати за допомогою --abbrev=<n>.

-B[<n>][/<m>]
--break-rewrites[=[<n>][/<m>]]

Розбийте повні зміни перезапису на пари видалення та створення. Це служить двом цілям:

Це впливає на те, як зміна, яка зводиться до повного перезапису файлу, представляється не як серія видалення та вставки, змішаних разом з дуже невеликою кількістю рядків, які випадково відповідають контексту, а як одне видалення всього старого, за яким слідує одна вставка всього нового, і число <m> контролює цей аспект опції -B (за замовчуванням 60%). -B/70% вказує, що менше 30% оригіналу має залишитися в результаті, щоб Git вважав це повним перезаписом (тобто інакше отриманий патч буде серією видалення та вставки, змішаних разом з рядками контексту).

При використанні з -M, повністю перезаписаний файл також вважається джерелом перейменування (зазвичай -M розглядає лише файл, який зник, як джерело перейменування), а число <n> контролює цей аспект опції -B (за замовчуванням 50%). -B20% вказує, що зміна з додаванням та видаленням порівняно з 20% або більше від розміру файлу може бути розглянута як можливе джерело перейменування на інший файл.

-M[<n>]
--find-renames[=<n>]

Виявлення перейменувань. Якщо вказано <n>, це поріг подібності індекс (тобто кількість додавань/видалень порівняно з розмір файлу). Наприклад, -M90% означає, що Git повинен враховувати видалити/додати пару для перейменування, якщо більше 90% файлу не змінилося. Без знака % число слід читати як дріб з десятковою комою перед ним. Тобто, -M5 стає 0,5, і таким чином те саме, що й -M50%. Аналогічно, -M05 це те саме, що й -M5%. Щоб обмежити виявлення точними перейменуваннями, використовуйте -M100%. Індекс подібності за замовчуванням становить 50%.

-C[<n>]
--find-copies[=<n>]

Виявляти копії, а також перейменування. Див. також --find-copies-harder. Якщо вказано <n>, це має те саме значення, що й -M<n>.

--find-copies-harder

З міркувань продуктивності, за замовчуванням, опція -C знаходить копії, лише якщо оригінальний файл копії був змінений у тому ж наборі змін. Цей прапорець змушує команду перевіряти незмінені файли як кандидатів на джерело копії. Це дуже ресурсоємна операція для великих проектів, тому використовуйте її з обережністю. Використання кількох опцій -C має той самий ефект.

-D
--irreversible-delete

Пропускайте преобраз для видалення, тобто виводьте лише заголовок, але не різницю між преобразом та /dev/null. Отриманий патч не призначений для застосування за допомогою patch або git apply; це виключно для тих, хто хоче зосередитися на перегляді тексту після зміни. Крім того, у виводі явно бракує інформації для застосування такого патчу у зворотному порядку, навіть вручну, звідси й назва опції.

При використанні разом з -B, також пропускається прообраз у частині видалення пари видалення/створення.

-l<num>

Опції -M та -C передбачають деякі попередні кроки, які можуть дешево виявляти підмножини перейменувань/копій, а потім виконується вичерпна резервна частина, яка порівнює всі непарні місця призначення, що залишилися, з усіма відповідними джерелами. (Для перейменувань релевантними є лише непарні джерела, що залишилися; для копій релевантними є всі оригінальні джерела.) Для N джерел та місць призначення ця вичерпна перевірка дорівнює O(N^2). Ця опція запобігає запуску вичерпної частини виявлення перейменування/копіювання, якщо кількість вихідних/цільових файлів перевищує задану кількість. За замовчуванням використовується значення diff.renameLimit. Зверніть увагу, що значення 0 вважається необмеженим.

--diff-filter=[(A|C|D|M|R|T|U|X|B)...[*]]

Вибирати лише файли, які додані (A), скопійовані (C), видалені (D), змінені (M), перейменовані (R), мають змінений тип (наприклад, звичайний файл, символічне посилання, підмодуль тощо) (T), роз’єднані (U), невідомі (X) або мають розірвану пару (B). Можна використовувати будь-яку комбінацію символів фільтра (включаючи жодного). Коли до комбінації додається * (Все або нічого), усі шляхи вибираються, якщо в порівнянні є файл, який відповідає іншим критеріям; якщо файлів, що відповідають іншим критеріям, немає, нічого не вибирається.

Також ці великі літери можна писати вниз, щоб виключити. Наприклад, --diff-filter=ad виключає додані та видалені шляхи.

Зверніть увагу, що не всі різниці можуть відображати всі типи. Наприклад, скопійовані та перейменовані записи не можуть відображатися, якщо виявлення цих типів вимкнено.

-S<string>

Шукає відмінності, які змінюють кількість входжень зазначеного <рядка> (тобто додавання/видалення) у файлі. Призначено для використання скриптером.

Це корисно, коли ви шукаєте точний блок коду (наприклад, структуру) і хочете знати історію цього блоку з моменту його появи: використовуйте цю функцію ітеративно, щоб повернути цікавий блок у прообразі назад у -S, і продовжуйте, доки не отримаєте першу версію блоку.

Також виконується пошук у бінарних файлах.

-G<regex>

Шукайте відмінності, текст виправлення яких містить додані/видалені рядки, що відповідають <regex>.

Щоб проілюструвати різницю між -S<regex> --pickaxe-regex та -G<regex>, розглянемо коміт з наступною різницею (diff) у тому ж файлі:

+    return frotz(nitfol, two->ptr, 1, 0);
...
-    hit = frotz(nitfol, mf2.ptr, 1, 0);

Хоча git log -G"frotz\(nitfol" покаже цей коміт, git log -S"frotz\(nitfol" --pickaxe-regex ні (оскільки кількість входжень цього рядка не змінилася).

Якщо не вказано параметр --text, фрагменти бінарних файлів без фільтра textconv будуть ігноруватися.

Дивіться запис «pickaxe» у gitdiffcore[7] для отримання додаткової інформації.

--find-object=<object-id>

Шукайте відмінності, які змінюють кількість входжень зазначеного об’єкта. Подібно до -S, лише аргумент відрізняється тим, що він не шукає певний рядок, а певний ідентифікатор об’єкта.

Об’єкт може бути блобом або комітом підмодуля. Це передбачає використання опції -t у git-log для пошуку дерев.

--pickaxe-all

Коли -S або -G знаходить зміну, показати всі зміни в цьому наборі змін, а не лише файли, що містять зміну в <рядку>.

--pickaxe-regex

Обробляти <рядок>, переданий -S, як розширений регулярний вираз POSIX для збігу.

-O<файл замовлень>

Контролюйте порядок, у якому файли відображаються у виводі. Це перевизначає змінну конфігурації diff.orderFile (див. git-config[1]). Щоб скасувати diff.orderFile, використовуйте -O/dev/null.

Порядок виведення визначається порядком шаблонів глобусів у <orderfile>. Усі файли зі шляхами, що відповідають першому шаблону, виводяться першими, усі файли зі шляхами, що відповідають другому шаблону (але не першому), виводяться наступними і так далі. Усі файли зі шляхами, що не відповідають жодному шаблону, виводяться останніми, ніби в кінці файлу є неявний шаблон збігу всіх. Якщо кілька шляхів мають однаковий ранг (вони відповідають одному шаблону, але не попереднім шаблонам), їхній порядок виведення відносно один одного є звичайним порядком.

<файл_замовлення> аналізується наступним чином:

  • Пусті рядки ігноруються, тому їх можна використовувати як роздільники для зручності читання.

  • Рядки, що починаються з хеш-символа ("#"), ігноруються, тому їх можна використовувати для коментарів. Додайте зворотну скісну риску ("\") на початок шаблону, якщо він починається з хеш-символа.

  • Кожен інший рядок містить один візерунок.

Шаблони мають той самий синтаксис і семантику, що й шаблони, що використовуються для fnmatch(3) без прапорця FNM_PATHNAME, за винятком того, що ім’я шляху також відповідає шаблону, якщо видалення будь-якої кількості компонентів кінцевого імені шляху відповідає шаблону. Наприклад, шаблон "foo*bar" відповідає "fooasdfbar" та "foo/bar/baz/asdf", але не "foobarx".

--skip-to=<файл>
--rotate-to=<файл>

Видалити файли перед іменем <файл> з виводу (тобто «перейти до») або перемістити їх у кінець виводу (тобто «повернути до»). Ці опції були винайдені в основному для використання команди git difftool і можуть бути не дуже корисними в іншому випадку.

-R

Поміняти місцями два вхідні дані; тобто показати відмінності між індексним або дисковим файлом та вмістом дерева.

--relative[=<шлях>]
--no-relative

Під час запуску з підкаталогу проєкту можна наказати програмі виключати зміни за межами каталогу та показувати шляхи відносно нього за допомогою цієї опції. Коли ви не перебуваєте в підкаталозі (наприклад, у чистому репозиторії), ви можете вказати, відносно якого підкаталогу робити вивід, вказавши <шлях> як аргумент. --no-relative можна використовувати для скасування як опції конфігурації diff.relative, так і попереднього --relative.

-a
--text

Обробляти всі файли як текст.

--ignore-cr-at-eol

Ігноруйте повернення каретки в кінці рядка під час порівняння.

--ignore-space-at-eol

Ігнорувати зміни пробілів в кінці циклу.

-b
--ignore-space-change

Ігнорувати зміни кількості пробілів. Це ігнорує пробіли в кінці рядка та вважає всі інші послідовності з одного або кількох пробілних символів еквівалентними.

-w
--ignore-all-space

Ігнорувати пробіли під час порівняння рядків. Це ігнорує відмінності, навіть якщо один рядок має пробіли, а інший їх не має.

--ignore-blank-lines

Ігнорувати зміни, рядки яких порожні.