| 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 the 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 formats 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 |