git-replace(1)
==============

NAME
----
git-replace - Create, list, delete refs to replace objects

SYNOPSIS
--------
[verse]
'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>]]

DESCRIPTION
-----------
Adds a 'replace' reference in `refs/replace/` namespace.

The name of the 'replace' reference is the SHA-1 of the object that is
replaced. The content of the 'replace' reference is the SHA-1 of the
replacement object.

The replaced object and the replacement object must be of the same type.
This restriction can be bypassed using `-f`.

Unless `-f` is given, the 'replace' reference must not yet exist.

There is no other restriction on the replaced and replacement objects.
Merge commits can be replaced by non-merge commits and vice versa.

Replacement references will be used by default by all Git commands
except those doing reachability traversal (prune, pack transfer and
fsck).

It is possible to disable use of replacement references for any
command using the `--no-replace-objects` option just after 'git'.

For example if commit 'foo' has been replaced by commit 'bar':

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

shows information about commit 'foo', while:

------------------------------------------------
$ git cat-file commit foo
------------------------------------------------

shows information about commit 'bar'.

The `GIT_NO_REPLACE_OBJECTS` environment variable can be set to
achieve the same effect as the `--no-replace-objects` option.

OPTIONS
-------
-f::
--force::
	If an existing replace ref for the same object exists, it will
	be overwritten (instead of failing).

-d::
--delete::
	Delete existing replace refs for the given objects.

--edit <object>::
	Edit an object's content interactively. The existing content
	for <object> is pretty-printed into a temporary file, an
	editor is launched on the file, and the result is parsed to
	create a new object of the same type as <object>. A
	replacement ref is then created to replace <object> with the
	newly created object. See linkgit:git-var[1] for details about
	how the editor will be chosen.

--raw::
	When editing, provide the raw object contents rather than
	pretty-printed ones. Currently this only affects trees, which
	will be shown in their binary form. This is harder to work with,
	but can help when repairing a tree that is so corrupted it
	cannot be pretty-printed. Note that you may need to configure
	your editor to cleanly read and write binary data.

--graft <commit> [<parent>...]::
	Create a graft commit. A new commit is created with the same
	content as <commit> except that its parents will be
	[<parent>...] instead of <commit>'s parents. A replacement ref
	is then created to replace <commit> with the newly created
	commit. Use `--convert-graft-file` to convert a
	`$GIT_DIR/info/grafts` file and use replace refs instead.

--convert-graft-file::
	Creates graft commits for all entries in `$GIT_DIR/info/grafts`
	and deletes that file upon success. The purpose is to help users
	with transitioning off of the now-deprecated graft file.

-l <pattern>::
--list <pattern>::
	List replace refs for objects that match the given pattern (or
	all if no pattern is given).
	Typing "git replace" without arguments, also lists all replace
	refs.

--format=<format>::
	When listing, use the specified <format>, which can be one of
	'short', 'medium' and 'long'. When omitted, the format
	defaults to 'short'.

FORMATS
-------

The following format are available:

* 'short':
	<replaced sha1>
* 'medium':
	<replaced sha1> -> <replacement sha1>
* 'long':
	<replaced sha1> (<replaced type>) -> <replacement sha1> (<replacement type>)

CREATING REPLACEMENT OBJECTS
----------------------------

linkgit:git-hash-object[1], linkgit:git-rebase[1], and
https://github.com/newren/git-filter-repo[git-filter-repo], among other git commands, can be used to
create replacement objects from existing objects. The `--edit` option
can also be used with 'git replace' to create a replacement object by
editing an existing object.

If you want to replace many blobs, trees or commits that are part of a
string of commits, you may just want to create a replacement string of
commits and then only replace the commit at the tip of the target
string of commits with the commit at the tip of the replacement string
of commits.

BUGS
----
Comparing blobs or trees that have been replaced with those that
replace them will not work properly. And using `git reset --hard` to
go back to a replaced commit will move the branch to the replacement
commit instead of the replaced commit.

There may be other problems when using 'git rev-list' related to
pending objects.

SEE ALSO
--------
linkgit:git-hash-object[1]
linkgit:git-rebase[1]
linkgit:git-tag[1]
linkgit:git-branch[1]
linkgit:git-commit[1]
linkgit:git-var[1]
linkgit:git[1]
https://github.com/newren/git-filter-repo[git-filter-repo]

GIT
---
Part of the linkgit:git[1] suite
