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.51.0
2025-08-18
- 2.48.1 → 2.50.1 no changes
-
2.48.0
2025-01-10
- 2.46.1 → 2.47.3 no changes
- 2.46.0 no changes
- 2.45.1 → 2.45.4 no changes
-
2.45.0
2024-04-29
- 2.43.2 → 2.44.4 no changes
-
2.43.1
2024-02-09
- 2.40.1 → 2.43.0 no changes
-
2.40.0
2023-03-12
- 2.38.1 → 2.39.5 no changes
-
2.38.0
2022-10-02
- 2.37.4 → 2.37.7 no changes
-
2.37.3
2022-08-30
- 2.34.1 → 2.37.2 no changes
-
2.34.0
2021-11-15
- 2.25.1 → 2.33.8 no changes
-
2.25.0
2020-01-13
- 2.22.1 → 2.24.4 no changes
- 2.22.0 no changes
- 2.21.1 → 2.21.4 no changes
-
2.21.0
2019-02-24
- 2.18.1 → 2.20.5 no changes
-
2.18.0
2018-06-21
- 2.17.0 → 2.17.6 no changes
-
2.16.6
2019-12-06
- 2.15.4 no changes
-
2.14.6
2019-12-06
- 2.11.4 → 2.13.7 no changes
-
2.10.5
2017-09-22
- 2.8.6 → 2.9.5 no changes
-
2.7.6
2017-07-30
- 2.5.6 → 2.6.7 no changes
-
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
СИНОПСИС
git add [--verbose | -v] [--dry-run | -n] [--force | -f] [--interactive | -i] [--patch | -p]
[--edit | -e] [--[no-]all | -A | --[no-]ignore-removal | [--update | -u]] [--sparse]
[--intent-to-add | -N] [--refresh] [--ignore-errors] [--ignore-missing] [--renormalize]
[--chmod=(+|-)x] [--pathspec-from-file=<файл> [--pathspec-file-nul]]
[--] [<специфікація шляху>…]
ОПИС
Ця команда оновлює індекс, використовуючи поточний вміст робочого дерева, щоб підготувати вміст, що буде поміщено до наступного коміту. Зазвичай вона додає поточний вміст існуючих шляхів цілком, але з деякими опціями її також можна використовувати для додавання вмісту лише з частиною змін, внесених до файлів робочого дерева, або для видалення шляхів, яких більше немає в робочому дереві.
«Індекс» містить знімок вмісту робочого дерева, і саме цей знімок береться за вміст наступного коміту. Таким чином, після внесення будь-яких змін до робочого дерева та перед виконанням команди commit, необхідно скористатися командою add
, щоб додати будь-які нові або змінені файли до індексу.
Цю команду можна виконати кілька разів перед комітом. Вона додає вміст зазначеного(их) файлу(ів) лише під час виконання команди add; якщо ви хочете, щоб наступні зміни були включені до наступного коміту, тоді вам потрібно знову виконати git
add
, щоб додати новий вміст до індексу.
Команду git
status
можна використовувати для отримання зведення про те, які файли мають зміни, що будуть поміщені в індекс для наступного коміту.
Команда git
add
за замовчуванням не додасть ігноровані файли. Якщо будь-які ігноровані файли були явно вказані в командному рядку, git
add
завершиться невдачею зі списком ігнорованих файлів. Ігноровані файли, до яких дійшли в результаті рекурсії каталогу або зміни імен файлів, що виконується Git (вкажіть глобуси перед командною оболонкою), будуть ігноруватися без попередження. Команду git
add
можна використовувати для додавання ігнорованих файлів за допомогою опції -f
(force).
Будь ласка, дивіться git-commit[1] для альтернативних способів додавання контенту до коміту.
ОПЦІЇ
- <pathspec>...
-
Файли для додавання вмісту. Можна вказати файлові глобальні об’єкти (наприклад,
*.c
), щоб додати всі відповідні файли. Також можна вказати початкову назву каталогу (наприклад,dir
, щоб додатиdir/file1
таdir/file2
), щоб оновити індекс відповідно до поточного стану каталогу в цілому (наприклад, якщо вказатиdir
, буде записано не лише файлdir/file1
, змінений у робочому дереві, файлdir/file2
, доданий до робочого дерева, але й файлdir/file3
, видалений з робочого дерева). Зверніть увагу, що старіші версії Git ігнорували видалені файли; використовуйте опцію--no-all
, якщо ви хочете додати змінені або нові файли, але ігнорувати видалені.Для отримання додаткової інформації про синтаксис <pathspec> див. запис pathspec у gitglossary[7].
-
-n
-
--dry-run
-
Насправді не додавайте файл(и), просто покажіть, чи вони існують та/або будуть проігноровані.
-
-v
-
--verbose
-
Будьте багатослівними.
-
-f
-
--force
-
Дозволити додавання файлів, які інакше ігноруються.
-
--sparse
-
Дозволити оновлення записів індексу поза межами конуса розрідженого контролю. Зазвичай,
git
add
відмовляється оновлювати записи індексу, шляхи яких не вписуються в конус розрідженого контролю, оскільки ці файли можуть бути видалені з робочого дерева без попередження. Див. git-sparse-checkout[1] для отримання додаткової інформації. -
-i
-
--interactive
-
Інтерактивно додавати змінений вміст робочого дерева до індексу. Можна надати додаткові аргументи шляху, щоб обмежити операцію підмножиною робочого дерева. Див. розділ «Інтерактивний режим» для отримання детальної інформації.
-
-p
-
--patch
-
Інтерактивно вибирайте фрагменти латок між індексом та робочим деревом і додавайте їх до індексу. Це дає користувачеві можливість переглянути різницю, перш ніж додавати змінений вміст до індексу.
Це фактично виконує команду
add
--interactive
, але оминає початкове меню команд і безпосередньо переходить до підкомандиpatch
. Див. розділ ‘Інтерактивний режим’' для отримання детальної інформації. -
-U
<n> -
--unified=
<n> -
Генерувати різниці з <n> рядками контексту. За замовчуванням використовується
diff.context
або 3, якщо параметр конфігурації не встановлено. -
--inter-hunk-context=
<n> -
Показує контекст між різницями (diff hanks), до вказаної <кількості> рядків, таким чином об’єднуючи ханки, що знаходяться близько один до одного. За замовчуванням використовується значення
diff.interHunkContext
або 0, якщо параметр конфігурації не встановлено.
-
-e
-
--edit
-
Відкрийте порівняльний файл (diff) з індексом у редакторі та дозвольте користувачеві його редагувати. Після закриття редактора налаштуйте заголовки ханка та застосуйте патч до індексу.
Мета цієї опції полягає у виборі рядків патча для застосування або навіть у зміні вмісту рядків для проміжної обробки. Це може бути швидшим та гнучкішим, ніж використання інтерактивного селектора фрагментів. Однак легко заплутатися та створити патч, який не застосовується до індексу. Див. РЕДАГУВАННЯ ПАТЧІВ нижче.
-
-u
-
--update
-
Оновити індекс лише там, де вже є запис, що відповідає <pathspec>. Це видаляє та змінює записи індексу відповідно до робочого дерева, але не додає нових файлів.
Якщо не вказано параметр <pathspec> при використанні опції
-u
, оновлюються всі відстежувані файли у всьому робочому дереві (старі версії Git обмежували оновлення поточним каталогом та його підкаталогом). -
-A
-
--all
-
--no-ignore-removal
-
Оновити індекс не лише там, де робоче дерево має файл, що відповідає <pathspec>, але й там, де індекс вже має запис. Це додає, змінює та видаляє записи індексу відповідно до робочого дерева.
Якщо <pathspec> не вказано, коли використовується опція
-A
, оновлюються всі файли у всьому робочому дереві (старі версії Git обмежували оновлення поточним каталогом та його підкаталогами). -
--no-all
-
--ignore-removal
-
Оновити індекс, додавши нові файли, невідомі індексу, та файли, змінені в робочому дереві, але ігнорувати файли, видалені з робочого дерева. Цей параметр не працює, якщо не використовується <шлях_до_визначення>.
Ця опція призначена, головним чином, для користувачів, які звикли до старіших версій Git, у яких
git
add
<pathspec>... було синонімомgit
add
--no-all
<pathspec>..., тобто ігнорувалися видалені файли. -
-N
-
--intent-to-add
-
Записуйте лише той факт, що шлях буде додано пізніше. Запис для шляху розміщується в індексі без вмісту. Це корисно, серед іншого, для показу неіндексованого вмісту таких файлів за допомогою
git
diff
та їх фіксації за допомогоюgit
commit
-a
. -
--refresh
-
Не додавайте файл(и), а лише оновлюйте їхню інформацію stat() в індексі.
-
--ignore-errors
-
Якщо деякі файли не вдалося додати через помилки їх індексації, не переривайте операцію, а продовжуйте додавання інших. Команда все одно завершиться з ненульовим статусом. Змінну конфігурації
add.ignoreErrors
можна встановити в значення true, щоб зробити це поведінкою за замовчуванням. -
--ignore-missing
-
Цей параметр можна використовувати лише разом з
--dry-run
. Використовуючи цей параметр, користувач може перевірити, чи буде проігноровано будь-який із заданих файлів, незалежно від того, чи вони вже присутні в робочому дереві, чи ні. -
--no-warn-embedded-repo
-
За замовчуванням,
git
add
попереджатиме вас про додавання вбудованого репозиторію до індексу без використанняgit
submodule
add
для створення запису в.gitmodules
. Ця опція приглушить попередження (наприклад, якщо ви вручну виконуєте операції з підмодулями). -
--renormalize
-
Застосуйте процес "очищення" до всіх відстежуваних файлів, щоб примусово знову додати їх до індексу. Це корисно після зміни конфігурації
core.autocrlf
або атрибутаtext
, щоб виправити файли, додані з неправильними закінченнями рядків CRLF/LF. Ця опція передбачає-u
. Поодинокі символи CR залишаються недоторканими, тому, хоча CRLF очищається до LF, послідовність CRCRLF очищається до CRLF лише частково. -
--chmod=
(+
|-
)x
-
Перевизначає біт виконання доданих файлів. Біт виконання змінюється лише в індексі, файли на диску залишаються незмінними.
-
--pathspec-from-file=
<файл> -
Специфікація шляху передається у <файл> замість аргументів командного рядка. Якщо <файл> дорівнює саме
-
, то використовується стандартний ввід. Елементи Pathspec розділяються символами LF або CR/LF. Елементи Pathspec можна брати в лапки, як пояснено для змінної конфігураціїcore.quotePath
(див. git-config[1]). Див. також--pathspec-file-nul
та глобальну змінну--literal-pathspecs
. -
--pathspec-file-nul
-
Має сенс лише з
--pathspec-from-file
. Елементи Pathspec розділяються символом NUL, а всі інші символи (включно з символами нового рядка та лапками) сприймаються буквально. -
--
-
Цей параметр можна використовувати для відокремлення параметрів командного рядка від списку файлів (корисно, коли імена файлів можуть бути сплутані з параметрами командного рядка).
ПРИКЛАДИ
-
Додає вміст з усіх файлів
*.txt
у директоріїDocumentation
та її піддиректоріях:$ git add Documentation/\*.txt
Зверніть увагу, що в цьому прикладі зірочку
*
взято в лапки з боку оболонки; це дозволяє команді включати файли з підкаталогів каталогуDocumentation/
. -
Враховує додавання контенту з усіх скриптів
git-*.sh
:$ git add git-*.sh
Оскільки цей приклад дозволяє командній оболонці розгорнути зірочку (тобто ви явно перераховуєте файли), він не враховує
subdir/git-foo.sh
.
ІНТЕРАКТИВНИЙ РЕЖИМ
Коли команда переходить в інтерактивний режим, вона показує вивід підкоманди status, а потім переходить у свій інтерактивний цикл виконання команд.
Цикл виконання команд показує список доступних підкоманд і видає запит "What now>". Загалом, коли запит закінчується одним символом >, ви можете вибрати лише один із запропонованих варіантів і ввести return, ось так:
*** Команди *** 1: status 2: update 3: revert 4: add untracked 5: patch 6: diff 7: quit 8: help What now> 1
Ви також можете сказати вище s
, sta
або status
, якщо вибір унікальний.
Основний цикл команд має 6 підкоманд (плюс help та quit).
- статус
-
Це показує різницю між
HEAD
та індексом (тобто що буде закомічено, якщо ви накажетеgit
commit
), а також між індексом та робочими файлами дерева (тобто що ви можете додати до проміжку передgit
commit
за допомогоюgit
add
) для кожного шляху. Приклад виводу виглядає так:staged unstaged path 1: binary nothing foo.png 2: +403/-35 +1/-1 add-interactive.c
Це показує, що
foo.png
має відмінності відHEAD
(але це двійковий файл, тому кількість рядків не може бути відображена), і немає різниці між індексованою копією та робочою версією дерева (якби робоча версія дерева також відрізнялася, то замість "nothing" було б показано "binary"). Інший файл,add-interactive.c
, має 403 додані рядки та 35 видалених рядків, якщо ви закомітите те, що є в індексі, але робочий файл дерева має подальші зміни (одне додавання та одне видалення). - update
-
Це відображає інформацію про стан і видає запит "Оновити>>". Коли запит закінчується подвійним >>, ви можете вибрати більше одного варіанта, об’єднаних пробілами або комами. Також ви можете сказати "діапазон". Наприклад, "2-5 7,9", щоб вибрати 2, 3, 4, 5, 7, 9 зі списку. Якщо друге число в діапазоні пропущено, використовуються всі інші латки. Наприклад, "7-", щоб вибрати 7, 8, 9 зі списку. Ви можете сказати *, щоб вибрати все.
Вибрані вами елементи потім виділяються позначкою «*», ось так:
staged unstaged path 1: binary nothing foo.png * 2: +403/-35 +1/-1 add-interactive.c
Щоб видалити вибір, додайте префікс
-
, ось так:Update>> -2
Після здійснення вибору, дайте відповідь порожнім рядком, щоб підготувати вміст файлів робочого дерева для вибраних шляхів в індексі.
- revert
-
Це має дуже схожий інтерфейс користувача до «оновлення», а проміжна інформація для вибраних шляхів повертається до версії HEAD. Скасування нових шляхів робить їх невідстежуваними.
- add untracked
-
Це має дуже схожий інтерфейс користувача на «оновлення» та «повернення», і дозволяє додавати невідстежувані шляхи до індексу.
- patch
-
Це дозволяє вам вибрати один шлях з вибору типу «статус». Після вибору шляху відображається різниця між індексом та робочим деревом файлу, а також запитується, чи хочете ви поетапно внести зміни до кожного фрагмента. Ви можете вибрати один із наступних варіантів і ввести команду return:
y - помістити цей чанк на індекс n - не помістити цей чанк на індекс q - вийти; не помістити цей чанк або будь-який з решти a - помістити цей чанк та всі наступні чанки у файлі на індекс d - не помістити цей чанк або будь-який з наступних чанків у файлі g - вибрати чанк для переходу / - знайти чанк, що відповідає заданому регулярному виразу j - залишити цей чанк невизначеним, переглянути наступний невизначений чанк J - залишити цей чанк невизначеним, переглянути наступний чанк k - залишити цей чанк невизначеним, переглянути попередній невизначений чанк K - залишити цей чанк невизначеним, переглянути попередній чанк s - розділити поточний чанк на менші чанки e - вручну редагувати поточний чанк p - вивести поточний чанк ? - вивести довідку
Після визначення долі всіх ханків, якщо якийсь ханк було вибрано, індекс оновлюється вибраними ханками.
Ви можете уникнути необхідності вводити тут return, встановивши для змінної конфігурації
interactive.singleKey
значенняtrue
. - diff
-
Це дозволяє переглянути, що буде закомічено (тобто між
HEAD
та індексом).
РЕДАГУВАННЯ ПАТЧІВ
Виклик git
add
-e
або вибір e
з інтерактивного селектора ханка відкриє патч у вашому редакторі; після завершення роботи редактора результат застосовується до індексу. Ви можете вносити довільні зміни до патча, але зверніть увагу, що деякі зміни можуть мати заплутані результати або навіть призвести до патча, який неможливо застосувати. Якщо ви хочете повністю перервати операцію (тобто не додавати нічого нового до індексу), просто видаліть усі рядки патча. У списку нижче описано деякі поширені речі, які ви можете побачити в патчі, та які операції редагування мають сенс для них.
- доданий контент
-
Доданий вміст представлено рядками, що починаються з "+". Ви можете запобігти додаванню будь-яких додаткових рядків, видаливши їх.
- видалений контент
-
Видалений вміст представлено рядками, що починаються з "-". Ви можете запобігти поетапному видаленню, перетворивши "-" на " " (пробіл).
- змінений вміст
-
Змінений вміст представлений рядками "-" (видалення старого вмісту), за якими йдуть рядки "+" (додавання вмісту на заміну). Ви можете запобігти поетапному впровадженню модифікації, перетворивши рядки "-" на " " та видаливши рядки "+". Майте на увазі, що зміна лише половини пари може призвести до заплутаних змін в індексі.
Також можна виконувати складніші операції. Але майте на увазі, що оскільки патч застосовується лише до індексу, а не до робочого дерева, робоче дерево виглядатиме так, ніби "скасовує" зміни в індексі. Наприклад, додавання нового рядка в індекс, який не знаходиться ні в HEAD
, ні в робочому дереві, призведе до підготовки нового рядка до фіксації (commit), але рядок виглядатиме скасованим у робочому дереві.
Уникайте використання цих конструкцій або робіть це з надзвичайною обережністю.
- видалення недоторканого контенту
-
Вміст, який не відрізняється між індексним та робочим деревом, може бути відображений у рядках контексту, що починаються з " " (пробілу). Ви можете підготувати рядки контексту для видалення, перетворивши пробіл на "-". Отриманий файл робочого дерева відобразиться для повторного додавання вмісту.
- зміна існуючого контенту
-
Також можна змінити рядки контексту, підготувавши їх до видалення (перетворивши " " на "-") та додавши рядок "+" з новим вмістом. Аналогічно можна змінити рядки "+" для існуючих доповнень або модифікацій. У всіх випадках нова модифікація відображатиметься скасованою в робочому дереві.
- новий контент
-
Ви також можете додати новий вміст, якого немає в патчі; просто додайте нові рядки, кожен з яких починатиметься з "+". Додавання відобразиться скасованим у робочому дереві.
Також є кілька операцій, яких слід повністю уникати, оскільки вони унеможливлять накладання латки:
-
додавання контексту ("") або видалення ("-") рядків
-
видалення контексту або рядків видалення
-
зміна вмісту контексту або рядків видалення
КОНФІГУРАЦІЯ
Все, що знаходиться нижче цього рядка в цьому розділі, вибірково включено з документації git-config[1]. Вміст такий самий, як і там:
Warning
|
Missing See original version for this content. |
GIT
Частина набору git[1]