Setup and Config
Getting and Creating Projects
Basic Snapshotting
Branching and Merging
Sharing and Updating Projects
Inspection and Comparison
Patching
Debugging
External Systems
Server Admin
Guides
- gitattributes
- Command-line interface conventions
- Everyday Git
- Frequently Asked Questions (FAQ)
- Glossary
- Hooks
- gitignore
- gitmodules
- Revisions
- Submodules
- Tutorial
- Workflows
- All guides...
Administration
Plumbing Commands
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
2.51.0
2025-08-18
- 2.49.1 → 2.50.1 no changes
- 2.49.0 no changes
- 2.48.1 → 2.48.2 no changes
-
2.48.0
2025-01-10
- 2.47.1 → 2.47.3 no changes
-
2.47.0
2024-10-06
- 2.46.1 → 2.46.4 no changes
-
2.46.0
2024-07-29
- 2.45.4 no changes
-
2.45.3
2024-11-26
- 2.45.1 → 2.45.2 no changes
-
2.45.0
2024-04-29
- 2.44.1 → 2.44.4 no changes
-
2.44.0
2024-02-23
- 2.43.2 → 2.43.7 no changes
-
2.43.1
2024-02-09
-
2.43.0
2023-11-20
- 2.42.2 → 2.42.4 no changes
-
2.42.1
2023-11-02
-
2.42.0
2023-08-21
- 2.41.1 → 2.41.3 no changes
-
2.41.0
2023-06-01
- 2.40.1 → 2.40.4 no changes
-
2.40.0
2023-03-12
- 2.39.1 → 2.39.5 no changes
-
2.39.0
2022-12-12
- 2.38.1 → 2.38.5 no changes
-
2.38.0
2022-10-02
- 2.37.3 → 2.37.7 no changes
-
2.37.2
2022-08-11
- 2.36.1 → 2.37.1 no changes
-
2.36.0
2022-04-18
- 2.34.1 → 2.35.8 no changes
-
2.34.0
2021-11-15
- 2.33.1 → 2.33.8 no changes
-
2.33.0
2021-08-16
- 2.32.1 → 2.32.7 no changes
-
2.32.0
2021-06-06
- 2.31.1 → 2.31.8 no changes
-
2.31.0
2021-03-15
- 2.30.1 → 2.30.9 no changes
-
2.30.0
2020-12-27
- 2.29.1 → 2.29.3 no changes
-
2.29.0
2020-10-19
- 2.28.1 no changes
-
2.28.0
2020-07-27
- 2.25.2 → 2.27.1 no changes
-
2.25.1
2020-02-17
-
2.25.0
2020-01-13
- 2.24.1 → 2.24.4 no changes
-
2.24.0
2019-11-04
- 2.22.1 → 2.23.4 no changes
-
2.22.0
2019-06-07
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.20.1 → 2.20.5 no changes
-
2.20.0
2018-12-09
- 2.19.3 → 2.19.6 no changes
-
2.19.2
2018-11-21
- 2.19.1 no changes
-
2.19.0
2018-09-10
- 2.18.1 → 2.18.5 no changes
-
2.18.0
2018-06-21
- 2.17.1 → 2.17.6 no changes
-
2.17.0
2018-04-02
-
2.16.6
2019-12-06
-
2.15.4
2019-12-06
-
2.14.6
2019-12-06
-
2.13.7
2018-05-22
-
2.12.5
2017-09-22
-
2.11.4
2017-09-22
- 2.10.5 no changes
-
2.9.5
2017-07-30
-
2.8.6
2017-07-30
- 2.7.6 no changes
-
2.6.7
2017-05-05
-
2.5.6
2017-05-05
-
2.4.12
2017-05-05
-
2.3.10
2015-09-28
- 2.1.4 → 2.2.3 no changes
-
2.0.5
2014-12-17
СИНОПСИС
gitdiff[<options>] [<commit>] [--] [<path>…]gitdiff[<options>]--cached[--merge-base] [<commit>] [--] [<path>…]gitdiff[<options>] [--merge-base] <commit> [<commit>…] <commit> [--] [<path>…]gitdiff[<options>] <commit>...<commit> [--] [<path>…]gitdiff[<options>] <blob> <blob>gitdiff[<options>]--no-index[--] <path> <path> [<pathspec>…]
ОПИС
Відображати зміни між робочим деревом та індексом або деревом, зміни між індексом та деревом, зміни між двома деревами, зміни, що виникають в результаті злиття, зміни між двома blob-об’єктами або зміни між двома файлами на диску.
-
gitdiff[<options>] [--] [<path>...] -
Ця форма призначена для перегляду змін, які ви внесли відносно індексу (область проміжного зберігання для наступного коміту). Іншими словами, відмінності – це те, що ви могли б_ сказати Git додати до індексу, але досі цього не зробили. Ви можете проміжним способом додати ці зміни, використовуючи git-add[1].
-
gitdiff[<options>]--no-index[--] <path> <path> [<pathspec>...] -
Ця форма призначена для порівняння двох заданих шляхів у файловій системі. Ви можете пропустити опцію
--no-index, якщо ви виконуєте команду в робочому дереві, контрольованому Git, і принаймні один зі шляхів вказує за межі робочого дерева, або якщо ви виконуєте команду за межами робочого дерева, контрольованого Git. Ця форма передбачає--exit-code. Якщо обидва шляхи вказують на каталоги, можна надати додаткові специфікації шляхів. Вони обмежать файли, що входять до різниці. Усі такі специфікації шляхів мають бути відносними, оскільки вони застосовуються до обох сторін різниці. -
gitdiff[<options>]--cached[--merge-base] [<commit>] [--] [<path>...] -
Ця форма призначена для перегляду змін, які ви проіндексували для наступного коміту відносно названого <commit>. Зазвичай вам потрібно порівняти їх з останнім комітом, тому, якщо ви не вкажете <commit>, за замовчуванням використовується значення
HEAD. ЯкщоHEADне існує (наприклад, ненароджені гілки) і <commit> не вказано, буде показано всі проіндексовані зміни.--stagedє синонімом--cached.Якщо вказано
--merge-base, замість використання <commit> використовується база злиття <commit> таHEAD.gitdiff--cached--merge-baseAеквівалентноgitdiff--cached$(gitmerge-baseAHEAD). -
gitdiff[<options>] [--merge-base] <commit> [--] [<path>...] -
Ця форма призначена для перегляду змін у вашому робочому дереві відносно названого <commit>. Ви можете використовувати
HEADдля порівняння його з останнім комітом або назву гілки для порівняння з кінчиком іншої гілки.Якщо вказано
--merge-base, замість використання <commit> використовується база злиття <commit> таHEAD.gitdiff--merge-baseAеквівалентноgitdiff$(gitmerge-baseAHEAD). -
gitdiff[<options>] [--merge-base] <commit> <commit> [--] [<path>...] -
Це для перегляду змін між двома довільними <commit>.
Якщо вказано
--merge-base, використовувати базу злиття двох комітів для сторони "до".gitdiff--merge-baseABеквівалентноgitdiff$(gitmerge-baseAB)B. -
gitdiff[<options>] <commit> <commit>...<commit> [--] [<path>...] -
Ця форма призначена для перегляду результатів коміту злиття. Перший у списку <commit> має бути самим комітом злиття; решта два або більше комітів повинні бути його батьківськими. Зручними способами створення бажаного набору ревізій є використання суфіксів
@та^!. ЯкщоAє комітом злиття, тоgitdiffAA^@,gitdiffA^!таgitshowAдають однакову комбіновану різницю. -
gitdiff[<options>] <commit>..<commit> [--] [<path>...] -
Це синонім попередньої форми (без
..) для перегляду змін між двома довільними <commit>. Якщо <commit> з одного боку пропустити, це матиме той самий ефект, що й використанняHEADзамість цього. -
gitdiff[<options>] <commit>...<commit> [--] [<path>...] -
Ця форма призначена для перегляду змін у гілці, що містить <commit> і аж до другого <commit>, починаючи зі спільного предка обох <commit>.
gitdiffA...Bеквівалентноgitdiff$(gitmerge-baseAB)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].
ОПЦІЇ
-
-p -
-u -
--patch -
Згенерувати патч (див. Генерація тексту патча за допомогою -p). Це значення за замовчуванням.
-
-s -
--no-patch -
Придушити весь вивід з механізму різниці. Корисно для команд типу
gitshow, які показують патч за замовчуванням, щоб приглушити їхній вивід або скасувати дію опцій типу--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не впливає наgitformat-patch. Надаючи третій параметр <count>, ви можете обмежити вивід першими рядками <count>, а потім ..., якщо їх більше.Ці параметри також можна встановити окремо за допомогою
--stat-width=<ширина>,--stat-name-width=<ширина-назви> та--stat-count=<кількість>. -
--compact-summary -
Вивести стислий виклад розширеної інформації заголовка, такої як створення або видалення файлів ("new" або "gone", необов’язково
+l, якщо це символічне посилання) та зміни режиму (+xабо-xдля додавання або видалення виконуваного біта відповідно) у diffstat. Інформація розміщується між частиною імені файлу та частиною графу. Має на увазі--stat. -
--numstat -
Подібно до
--stat, але показує кількість доданих та видалених рядків у десятковому форматі та шлях без скорочень, що робить його зручнішим для машинного обчислення. Для бінарних файлів виводить два-замість00. -
--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налаштування конфігурації.