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

НАЗВА

git-add - Додає вміст файлу до індексування

СИНОПСИС

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 uk/config/add.adoc

See original version for this content.

GIT

Частина набору git[1]