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

НАЗВА

git-replace — Створення, перегляд, видалення посилань для заміни обʼєктів

СИНОПСИС

git replace [-f] <object> <replacement>
git replace [-f] --edit <object>
git replace [-f] --graft <commit> [<parent>…​]
git replace [-f] --convert-graft-file
git replace -d <object>…​
git replace [--format=<format>] [-l [<pattern>]]

ОПИС

Додає посилання replace у простір імен refs/replace/.

Імʼя посилання replace — це SHA-1 обʼєкта, який замінюється. Вміст посилання replace — це SHA-1 обʼєкта, що замінює.

Замінений обʼєкт та обʼєкт заміни повинні бути одного типу. Це обмеження можна обійти за допомогою параметра -f.

Якщо не вказано параметр -f, посилання для заміни ще не повинно існувати.

Немає жодних інших обмежень щодо замінених та замінюваних обʼєктів. Коміти злиття можна замінити на незлиті коміти і навпаки.

Посилання на заміну будуть використовуватися зазвичай усіма командами Git, окрім тих, що виконують обхід досяжності (prune, pack transfer та fsck).

Можна вимкнути використання посилань на заміну для будь-якої команди, використовуючи опцію --no-replace-objects одразу після git.

Наприклад, якщо коміт foo було замінено на коміт bar:

$ git --no-replace-objects cat-file commit foo

показує інформацію про коміт foo, тоді як:

$ git cat-file commit foo

показує інформацію про коміт bar.

Змінну середовища GIT_NO_REPLACE_OBJECTS можна встановити для досягнення того ж ефекту, що й опція --no-replace-objects.

ОПЦІЇ

-f
--force

Якщо для того самого обʼєкта існує посилання на заміну, воно буде перезаписано (замість того, щоб завершитися невдачею).

-d
--delete

Видалити наявні посилання на заміну для вказаних обʼєктів.

--edit <object>

Інтерактивне редагування вмісту обʼєкта. Наявний вміст для <object> виводиться у тимчасовий файл, для файлу запускається редактор, а результат аналізується для створення нового обʼєкта того ж типу, що й <object>. Потім створюється посилання на заміну <object> новоствореним обʼєктом. Див. git-var[1] для отримання детальної інформації про те, як буде вибрано редактор.

--raw

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

--graft <commit> [<parent>…​]

Створює коміт graft. Новий коміт створюється з тим самим вмістом, що й <commit>, за винятком того, що його батьками будуть [<parent>…​] замість батьків <commit>. Потім створюється посилання на заміну, щоб замінити <commit> щойно створеним комітом. Використовуйте --convert-graft-file для конвертації файлу $GIT_DIR/info/grafts та замість нього використовуйте посилання replace refs.

--convert-graft-file

Створює коміти graft для всіх записів у $GIT_DIR/info/grafts та видаляє цей файл у разі успіху. Мета полягає в тому, щоб допомогти користувачам перейти з файлу graft, який зараз застарів.

-l <pattern>
--list <pattern>

Вивести список посилань на заміну для обʼєктів, які відповідають заданому шаблону (або всі, якщо шаблон не вказано). Введення "git replace" без аргументів також виведе список усіх посилань для заміни.

--format=<format>

Під час перерахування використовуйте вказаний <format>, який може бути одним із варіантів: short, medium або long. Якщо його пропустити, стандартний формат — short.

ФОРМАТИ

Доступні такі формати:

  • short: <replaced-sha1>

  • medium: <replaced-sha1> → <replacement-sha1>

  • long: <replaced-sha1> (<replaced-type>) → <replacement-sha1> (<replacement-type>)

СТВОРЕННЯ ОБʼЄКТІВ ЗАМІНИ

Команди git-hash-object[1], git-rebase[1] та git-filter-repo, серед інших git, можна використовувати для створення обʼєктів-замінників з наявних обʼєктів. Опцію --edit також можна використовувати з git replace для створення обʼєкта-замінника шляхом редагування наявного обʼєкта.

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

ПОМИЛКИ

Порівняння замінених блобів або дерев з тими, що їх замінюють, не працюватиме належним чином. А використання git reset --hard для повернення до заміненого коміту перемістить гілку до заміненого коміту замість заміненого.

Під час використання git rev-list можуть виникнути інші проблеми, повʼязані з обʼєктами, що очікують розгляду.

GIT

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