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.53.0 no changes
-
2.52.0
2025-11-17
- 2.51.1 → 2.51.2 no changes
-
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]] [--] [<специфікація шляху>…]
ОПИС
Додавання вмісту нових або змінених файлів до індексу. «Індекс» (також відомий як «область проміжної обробки [staging area]») — це те, що ви використовуєте для підготовки вмісту наступного коміту.
Коли ви запускаєте git commit без будь-яких інших аргументів, будуть зафіксовані лише зміни додані до stage. Наприклад, якщо ви відредагували file.c і хочете зафіксувати свої зміни до цього файлу, ви можете скористатись командами:
git add file.c git commit
Ви також можете додати лише частину змін до файлу за допомогою git add -p.
Цю команду можна виконати кілька разів перед комітом. Вона додає вміст зазначеного(их) файлу(ів) лише під час виконання команди add; якщо ви хочете, щоб наступні зміни були включені до наступного коміту, тоді вам потрібно знову виконати git add, щоб додати новий вміст до індексу.
Команду git status можна використовувати для отримання підсумків про те, які файли мають зміни, що будуть поміщені в індекс для наступного коміту.
Команда git add зазвичай не додасть ігноровані файли. Ви можете скористатися опцією --force для додавання ігнорованих файлів. Якщо ви вкажете точну назву ігнорованого файлу, git add завершиться невдачею зі списком ігнорованих файлів. В іншому випадку файл буде проігноровано.
Будь ласка, дивіться git-commit[1] для альтернативних способів додавання контенту до коміту.
ОПЦІЇ
- <pathspec>...
-
Файли для додавання. Можна використовувати шаблони (наприклад,
*.c), щоб додати всі відповідні файли. Також можна вказати назву теки (наприклад,dir, щоб додатиdir/file1таdir/file2), щоб оновити індекс відповідно до поточного стану теки в цілому (наприклад, якщо вказатиdir, буде записано не лише файлdir/file1, змінений у робочому дереві, файлdir/file2, доданий до робочого дерева, але й файлdir/file3, видалений з робочого дерева). Зверніть увагу, що старіші версії Git ігнорували видалені файли; використовуйте опцію--no-all, якщо ви хочете додати змінені або нові файли, але ігнорувати видалені.Для отримання додаткової інформації про синтаксис <специфікатора-шляху> див. елемент pathspec у gitglossary[7].
-
-n -
--dry-run -
Насправді не додає файл(и), лише показує, чи вони існують та/або будуть проігноровані.
-
-v -
--verbose -
Докладний вивід.
-
-f -
--force -
Дозволяє додавання файлів, які інакше ігноруються.
-
--sparse -
Дозволяє оновлення елементів індексу поза межами конуса розрідженого контролю. Зазвичай,
gitaddвідмовляється оновлювати елементи індексу, шляхи яких не вписуються в конус розрідженого контролю, оскільки ці файли можуть бути видалені з робочого дерева без попередження. Див. git-sparse-checkout[1] для отримання додаткової інформації. -
-i -
--interactive -
Додає змінений вміст робочого дерева до індексу в інтерактивному режимі. Можна надати додаткові аргументи шляху, щоб обмежити операцію підмножиною робочого дерева. Див. розділ «Інтерактивний режим» для отримання детальної інформації.
-
-p -
--patch -
Вибирайте фрагменти латок між індексом та робочим деревом в інтерактивному режимі та додавайте їх до індексу. Це дає користувачеві можливість переглянути відмінності, перш ніж додавати змінений вміст до індексу.
Це фактично виконує команду
add--interactive, але оминає початкове меню команди і безпосередньо переходить до підкомандиpatch. Див. розділі «Інтерактивний режим» для отримання детальної інформації. -
-U<n> -
--unified=<n> -
Створює файли відмінностей (diff) з <n> рядками контексту. Стандартно використовується
diff.contextабо 3, якщо параметр конфігурації не встановлено. -
--inter-hunk-context=<n> -
Показує контекст між фрагментами відмінностей (diff hunks), до вказаної <кількості> рядків, таким чином обʼєднуючи фрагменти, що знаходяться близько один до одного. Стандартно використовується значення
diff.interHunkContextабо 0, якщо параметр конфігурації не встановлено.
-
-e -
--edit -
Відкриває файл відмінностей (diff) з індексом у редакторі та дозволяє користувачеві його редагувати. Після закриття редактора налаштовує заголовки частки та застосовує латку до індексу.
Мета цієї опції полягає у виборі рядків латки для застосування або навіть у зміні вмісту рядків які додаються до stage. Це може бути швидшим та гнучкішим, ніж використання інтерактивного селектора фрагментів. Однак легко заплутатися та створити латку, яка не застосовується до індексу. Див. РЕДАГУВАННЯ ЛАТОК нижче.
-
-u -
--update -
Оновлює індекс лише там, де вже є запис, що відповідає <специфікатору-шляху>. Використання цього параметра призводить до видалення та заміни елементів індексу відповідно до робочого дерева, але не додає нових файлів.
Якщо не вказано параметр <специфікатор-шляху> при використанні опції
-u, оновлюються всі відстежувані файли у всьому робочому дереві (старі версії Git обмежували оновлення поточною текою та її підтеками). -
-A -
--all -
--no-ignore-removal -
Оновлює індекс не лише там, де робоче дерево має файл, що відповідає <специфікатору-шляху>, але й там, де індекс вже має запис. Цей параметр дозволяє додавати, змінювати та видаляти записи індексу, щоб відповідати стану робочого дерева.
Якщо <специфікатор-шляху> не вказано, коли використовується опція
-A, оновлюються всі файли у всьому робочому дереві (старі версії Git обмежували оновлення поточною текою та її підтеками). -
--no-all -
--ignore-removal -
Оновлює індекс, додаванням нових файлів, невідомих індексу, та файлів змінені в робочому дереві, але ігнорує файли, видалені з робочого дерева. Цей параметр не працює, якщо не використовується <специфікатор-шляху>.
Ця опція призначена, головним чином, для користувачів, які звикли до старіших версій Git, у яких
gitadd<специфікатор-шляху>... було синонімом git add --no-all < специфікатор-шляху> >..., тобто ігнорувалися видалені файли. -
-N -
--intent-to-add -
Записує лише той факт, що шлях буде додано пізніше. Запис для шляху розміщується в індексі без його вмісту. Це корисно, серед іншого, для показу неіндексованого вмісту таких файлів за допомогою
gitdiffта їх фіксації за допомогоюgitcommit-a. -
--refresh -
Не додає файл(и), а лише оновлює їхню інформацію stat() в індексі.
-
--ignore-errors -
Якщо деякі файли не вдалося додати через помилки їх індексації, не переривати операцію, а продовжити додавання інших. Команда все одно завершиться з ненульовим статусом. Змінну конфігурації
add.ignoreErrorsможна встановити в значення true, щоб зробити це стандартною поведінкою. -
--ignore-missing -
Цей параметр можна використовувати лише разом з
--dry-run. Використовуючи цей параметр, користувач може перевірити, чи буде проігноровано будь-який із вказаних файлів, незалежно від того, чи вони вже присутні в робочому дереві, чи ні. -
--no-warn-embedded-repo -
Типово,
gitaddпопереджатиме вас про додавання вбудованого репозиторію до індексу без використанняgitsubmoduleaddдля створення запису в.gitmodules. Ця опція придушить попередження (наприклад, якщо ви вручну виконуєте операції з субмодулями). -
--renormalize -
Застосовує процес "очищення" до всіх відстежуваних файлів, щоб примусово знову додати їх до індексу. Це корисно після зміни конфігурації
core.autocrlfабо атрибутаtext, щоб виправити файли, додані з неправильними закінченнями рядків CRLF/LF. Ця опція передбачає-u. Поодинокі символи CR залишаються недоторканими, тому, хоча CRLF очищається до LF, послідовність CRCRLF очищається до CRLF лише частково. -
--chmod=(+|-)x -
Перевизначає біт виконання доданих файлів. Біт виконання змінюється лише в індексі, файли на диску залишаються незмінними.
-
--pathspec-from-file=<файл> -
Специфікатор шляху передається у <файл> замість аргументів командного рядка. Якщо <файл> визначається як
-, то використовується стандартний ввід. Елементи специфікатора шляху розділяються символами LF або CR/LF. Елементи специфікатора шляху можна брати в лапки, див. пояснення для змінної конфігурації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).
- status
-
Показує різницю між
HEADта індексом (тобто що буде зафіксоване, якщо ви зробитеgitcommit), а також між індексом та робочими файлами дерева (тобто що ви можете додати до stage передgitcommitза допомогоюgitadd) для кожного шляху. Приклад виводу виглядає так: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
-
Виводить інформацію про стан і показує запрошення "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
Після здійснення вибору, дайте відповідь порожнім рядком, щоб розмістити вміст файлів робочого дерева в stage для вибраних шляхів в індексі.
- revert
-
Має дуже схожий інтерфейс з update, а інформація в stage для вибраних шляхів скидається до версії HEAD. Відкат для нових шляхів робить їх невідстежуваними.
- add untracked
-
Має дуже схожий інтерфейс з update та revert, і дозволяє додавати невідстежувані шляхи до індексу.
- patch
-
Дозволяє вибрати один шлях з вибору типу status. Після вибору шляху показуються відмінності між індексом та робочим деревом файлу, а також запитується, чи хочете ви внести зміни до кожного фрагмента в stage. Ви можете вибрати один із наступних варіантів і натиснути Enter:
y — додати цей фрагмент в stage n — не додавати цей фрагмент в stage q — вийти; не додавати цей фрагмент в stage або будь-який інший з решти a — додати цей фрагмент та всі наступні фрагменти у файлі в stage d — не додавати цей фрагмент або будь-який з наступних фрагментів у файлі в stage g — вибрати фрагмент для переходу до нього / — знайти фрагмент, що відповідає заданому регулярному виразу j — перейти до наступного невизначеного фрагмента, прокрутити вниз J — перейти до наступного фрагмента, прокрутити вниз k — перейти до попереднього невизначеного фрагмента, прокрутити вгору K — перейти до попереднього фрагмента, прокрутити вгору s — розділити поточний фрагмент на менші e — вручну редагувати поточний фрагмент p — вивести поточний фрагмент P — вивести поточний фрагмент за допомогою pager ? — вивести довідку
Після визначення долі всіх фрагментів, якщо якийсь фрагмент було вибрано, індекс оновлюється вибраними фрагментами.
Ви можете уникнути необхідності натискати тут Enter, встановивши для змінної конфігурації
interactive.singleKeyзначенняtrue. - diff
-
Дозволяє переглянути, що буде зафіксовано (тобто відмінність між
HEADта індексом).
РЕДАГУВАННЯ ЛАТОК
Виклик git add -e або вибір e з інтерактивного селектора фрагмента відкриє латку у вашому редакторі; після завершення роботи редактора результат застосовується до індексу. Ви можете вносити довільні зміни до латки, але зверніть увагу, що деякі зміни можуть мати заплутані результати або навіть призвести до латки, яку неможливо застосувати. Якщо ви хочете повністю перервати операцію (тобто не додавати нічого нового до індексу), просто видаліть усі рядки латки. У переліку нижче описано деякі поширені речі, які ви можете побачити в латці, та які операції редагування мають сенс для них.
- доданий вміст
-
Доданий вміст представлено рядками, що починаються з "+". Ви можете запобігти додаванню будь-яких додаткових рядків, видаливши їх.
- видалений вміст
-
Видалений вміст представлено рядками, що починаються з "-". Ви можете запобігти додаванню в stage видалення, замінивши "-" на " " (пробіл).
- змінений вміст
-
Змінений вміст представлений рядками "-" (видалення старого вмісту), за якими йдуть рядки "+" (додавання вмісту на заміну). Ви можете запобігти додаванню змін в stage, замінивши в рядках "-" на " " та видаливши рядки "+". Майте на увазі, що зміна лише половини пари може призвести до заплутаних змін в індексі.
Також можна виконувати складніші операції. Але майте на увазі, що оскільки латка застосовується лише до індексу, а не до робочого дерева, робоче дерево виглядатиме так, ніби "скасовує" зміни в індексі. Наприклад, додавання нового рядка в індекс, який не знаходиться ні в HEAD, ні в робочому дереві, призведе до підготовки нового рядка до фіксації (commit), але рядок виглядатиме скасованим у робочому дереві.
Уникайте використання цих конструкцій або робіть це з надзвичайною обережністю.
- видалення незміненого вмісту
-
Вміст, який не відрізняється між індексом та робочим деревом, може бути відображений у рядках контексту, що починаються з " " (пробілу). Ви можете додати в stage рядки контексту для видалення, перетворивши пробіл на "-". Отриманий файл робочого дерева відобразиться для повторного додавання вмісту.
- зміна наявного вмісту
-
Також можна змінити рядки контексту, додавши їх до stage для видалення (перетворивши " " на "-") та додавши рядок "+" з новим вмістом. Аналогічно можна змінити рядки "+" для наявних доповнень або модифікацій. У всіх випадках нова модифікація відображатиметься скасованою в робочому дереві.
- новий вміст
-
Ви також можете додати новий вміст, якого немає в латці; просто додайте нові рядки, кожен з яких починатиметься з "+". Додавання відобразиться скасованим у робочому дереві.
Також є кілька операцій, яких слід повністю уникати, оскільки вони унеможливлять накладання латки:
-
додавання контекстних рядків (" ") або рядків видалення ("-")
-
видалення контекстних рядків або рядків видалення
-
зміна вмісту контекстних рядків або рядків видалення
КОНФІГУРАЦІЯ
Все, що знаходиться нижче цього рядка в цьому розділі, вибірково включено з документації git-config[1]. Вміст такий самий, як і там:
-
add.ignoreErrors -
add.ignore-errors(застарілий) -
Наказує
gitaddпродовжувати додавання файлів, якщо деякі файли неможливо додати через помилки індексації. Еквівалентно опції--ignore-errors.add.ignore-errorsзастарів, оскільки він не відповідає звичайним правила іменування для змінних конфігурації.
GIT
Частина набору git[1]