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.44.1 → 2.53.0 no changes
-
2.44.0
2024-02-23
- 2.43.1 → 2.43.7 no changes
-
2.43.0
2023-11-20
- 2.24.1 → 2.42.4 no changes
-
2.24.0
2019-11-04
- 2.18.1 → 2.23.4 no changes
-
2.18.0
2018-06-21
- 2.10.5 → 2.17.6 no changes
-
2.9.5
2017-07-30
- 2.2.3 → 2.8.6 no changes
-
2.1.4
2014-12-17
-
2.0.5
2014-12-17
ОБЗОР
git replace [-f] <объект> <замена> git replace [-f] --edit <объект> git replace [-f] --graft <коммит> [<родитель>…] git replace [-f] --convert-graft-file git replace -d <объект>… git replace [--format=<формат>] [-l [<шаблон>]]
ОПИСАНИЕ
Добавляет ссылку «replace» (замены) в пространстве имён refs/replace/.
Именем ссылки «replace» является SHA-1 заменяемого объекта. Содержимым ссылки «replace» является SHA-1 объекта-замены.
Заменяемый объект и объект-замена должны быть одного типа. Это ограничение можно обойти, используя -f.
Если не указан -f, ссылка «replace» ещё не должна существовать.
Нет никаких других ограничений на заменяемый объект и объект-замену. Коммиты слияния могут быть заменены коммитами без слияния, и наоборот.
Ссылки замены будут использоваться по умолчанию всеми командами 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 <объект>
-
Редактировать содержимое объекта в интерактивном режиме. Существующее содержимое для <объекта> выводится в удобочитаемом виде во временный файл, запускается редактор для этого файла, и результат анализируется для создания нового объекта того же типа, что и <объект>. Затем создаётся ссылка замены, чтобы заменить <объект> на вновь созданный объект. Подробности о том, как будет выбран редактор, см. в git-var[1].
- --raw
-
При редактировании предоставлять необработанное содержимое объекта, а не удобочитаемое. В настоящее время это влияет только на деревья, которые будут показаны в их двоичной форме. С этим сложнее работать, но это может помочь при восстановлении дерева, которое настолько повреждено, что его нельзя вывести в удобочитаемом виде. Обратите внимание, что вам может потребоваться настроить редактор для корректного чтения и записи двоичных данных.
- --graft <коммит> [<родитель>…]
-
Создать сброшенный (graft) коммит. Создаётся новый коммит с тем же содержимым, что и <коммит>, за исключением того, что его родителями будут [<родитель>…] вместо родителей <коммита>. Затем создаётся ссылка замены, чтобы заменить <коммит> на вновь созданный коммит. Используйте
--convert-graft-fileдля преобразования файла$GIT_DIR/info/graftsи использования ссылок замены вместо него. - --convert-graft-file
-
Создаёт сброшенные (graft) коммиты для всех записей в
$GIT_DIR/info/graftsи удаляет этот файл в случае успеха. Цель — помочь пользователям перейти от теперь устаревшего файла grafts. - -l <шаблон>
- --list <шаблон>
-
Вывести список ссылок замены для объектов, соответствующих заданному шаблону (или все, если шаблон не задан). Ввод «git replace» без аргументов также выводит все ссылки замены.
- --format=<формат>
-
При выводе списка используйте указанный <формат>, который может быть одним из short, medium и long. Если не указан, формат по умолчанию — short.
ФОРМАТЫ
Доступны следующие форматы:
-
short: <заменённый-sha1>
-
medium: <заменённый-sha1> → <замена-sha1>
-
long: <заменённый-sha1> (<заменённый-тип>) → <замена-sha1> (<тип-замены>)
СОЗДАНИЕ ОБЪЕКТОВ-ЗАМЕН
git-hash-object[1], git-rebase[1] и git-filter-repo, среди прочих команд git, могут использоваться для создания объектов-замен из существующих объектов. Опция --edit также может использоваться с git replace для создания объекта-замены путём редактирования существующего объекта.
Если вы хотите заменить много blob-объектов, деревьев или коммитов, которые являются частью цепочки коммитов, вы можете просто создать заменяющую цепочку коммитов, а затем заменить только коммит на верхушке (tip) целевой цепочки коммитов на коммит на верхушке заменяющей цепочки коммитов.
ОШИБКИ
Сравнение blob-объектов или деревьев, которые были заменены, с теми, которые их заменяют, не будет работать должным образом. И использование git reset --hard для возврата к заменённому коммиту переместит ветку на коммит-замену, а не на заменённый коммит.
Могут возникнуть и другие проблемы при использовании git rev-list, связанные с ожидающими объектами.
GIT
Является частью пакета git[1]