|  | 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 SHA-1 of the object that is | 
|  | replaced. The content of the 'replace' reference is the SHA-1 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 |