2009-04-14 00:36:59 +02:00
|
|
|
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
|
|
|
|
-----------
|
2012-08-06 22:36:47 +02:00
|
|
|
Adds a 'replace' reference in `refs/replace/` namespace.
|
2009-04-14 00:36:59 +02:00
|
|
|
|
2013-04-15 19:49:04 +02:00
|
|
|
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
|
2009-04-14 00:36:59 +02:00
|
|
|
replacement object.
|
|
|
|
|
2013-09-06 07:10:54 +02:00
|
|
|
The replaced object and the replacement object must be of the same type.
|
|
|
|
This restriction can be bypassed using `-f`.
|
|
|
|
|
2012-08-06 22:36:47 +02:00
|
|
|
Unless `-f` is given, the 'replace' reference must not yet exist.
|
2009-04-14 00:36:59 +02:00
|
|
|
|
2013-09-06 07:10:54 +02:00
|
|
|
There is no other restriction on the replaced and replacement objects.
|
2013-09-08 14:10:44 +02:00
|
|
|
Merge commits can be replaced by non-merge commits and vice versa.
|
2013-09-06 07:10:54 +02:00
|
|
|
|
2013-01-21 20:17:53 +01:00
|
|
|
Replacement references will be used by default by all Git commands
|
2009-11-19 07:13:15 +01:00
|
|
|
except those doing reachability traversal (prune, pack transfer and
|
|
|
|
fsck).
|
2009-10-12 22:30:32 +02:00
|
|
|
|
2009-11-19 07:13:15 +01:00
|
|
|
It is possible to disable use of replacement references for any
|
|
|
|
command using the `--no-replace-objects` option just after 'git'.
|
2009-10-12 22:30:32 +02:00
|
|
|
|
2009-11-19 07:13:15 +01:00
|
|
|
For example if commit 'foo' has been replaced by commit 'bar':
|
2009-10-12 22:30:32 +02:00
|
|
|
|
|
|
|
------------------------------------------------
|
2009-11-19 07:13:15 +01:00
|
|
|
$ git --no-replace-objects cat-file commit foo
|
2009-10-12 22:30:32 +02:00
|
|
|
------------------------------------------------
|
|
|
|
|
2009-11-19 07:13:15 +01:00
|
|
|
shows information about commit 'foo', while:
|
2009-10-12 22:30:32 +02:00
|
|
|
|
|
|
|
------------------------------------------------
|
|
|
|
$ git cat-file commit foo
|
|
|
|
------------------------------------------------
|
|
|
|
|
2009-11-19 07:13:15 +01:00
|
|
|
shows information about commit 'bar'.
|
2009-10-12 22:30:32 +02:00
|
|
|
|
2009-11-19 07:13:16 +01:00
|
|
|
The 'GIT_NO_REPLACE_OBJECTS' environment variable can be set to
|
|
|
|
achieve the same effect as the `--no-replace-objects` option.
|
|
|
|
|
2009-04-14 00:36:59 +02:00
|
|
|
OPTIONS
|
|
|
|
-------
|
|
|
|
-f::
|
2013-09-06 07:10:58 +02:00
|
|
|
--force::
|
2009-04-14 00:36:59 +02:00
|
|
|
If an existing replace ref for the same object exists, it will
|
|
|
|
be overwritten (instead of failing).
|
|
|
|
|
|
|
|
-d::
|
2013-09-06 07:10:58 +02:00
|
|
|
--delete::
|
2009-04-14 00:36:59 +02:00
|
|
|
Delete existing replace refs for the given objects.
|
|
|
|
|
|
|
|
-l <pattern>::
|
2013-09-06 07:10:58 +02:00
|
|
|
--list <pattern>::
|
2009-04-14 00:36:59 +02:00
|
|
|
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.
|
|
|
|
|
2013-09-06 07:10:57 +02:00
|
|
|
CREATING REPLACEMENT OBJECTS
|
|
|
|
----------------------------
|
|
|
|
|
|
|
|
linkgit:git-filter-branch[1], linkgit:git-hash-object[1] and
|
|
|
|
linkgit:git-rebase[1], among other git commands, can be used to create
|
|
|
|
replacement objects from existing objects.
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
2009-04-14 00:36:59 +02:00
|
|
|
BUGS
|
|
|
|
----
|
|
|
|
Comparing blobs or trees that have been replaced with those that
|
2010-01-07 17:49:12 +01:00
|
|
|
replace them will not work properly. And using `git reset --hard` to
|
2009-04-14 00:36:59 +02:00
|
|
|
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
|
2013-09-06 07:10:54 +02:00
|
|
|
pending objects.
|
2009-04-14 00:36:59 +02:00
|
|
|
|
|
|
|
SEE ALSO
|
|
|
|
--------
|
2013-09-06 07:10:57 +02:00
|
|
|
linkgit:git-hash-object[1]
|
|
|
|
linkgit:git-filter-branch[1]
|
|
|
|
linkgit:git-rebase[1]
|
2009-04-14 00:36:59 +02:00
|
|
|
linkgit:git-tag[1]
|
|
|
|
linkgit:git-branch[1]
|
2009-10-12 22:30:32 +02:00
|
|
|
linkgit:git[1]
|
2009-04-14 00:36:59 +02:00
|
|
|
|
|
|
|
GIT
|
|
|
|
---
|
|
|
|
Part of the linkgit:git[1] suite
|