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

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

SYNOPSIS
--------
[verse]
'git replace' [-f] <object> <replacement>
'git replace' -d <object>...
'git replace' -l [<pattern>]

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

The name of the 'replace' reference is the SHA1 of the object that is
replaced. The content of the 'replace' reference is the SHA1 of the
replacement object.

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

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::
	If an existing replace ref for the same object exists, it will
	be overwritten (instead of failing).

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

-l <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.

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. And of course things may break if an object of one
type is replaced by an object of another type (for example a blob
replaced by a commit).

SEE ALSO
--------
linkgit:git-tag[1]
linkgit:git-branch[1]
linkgit:git[1]

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