українська мова ▾ 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/.

Ім’я посилання «заміна» – це SHA-1 об’єкта, який замінюється. Вміст посилання «заміна» – це 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

показує інформацію про панель комітів.

Змінну середовища 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: <замінено-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]