git-replace
Create, list, delete refs to replace objects
TLDR
Replace any commit with a different one, leaving other commits unchanged
Delete existing replace refs for the given objects
Edit an object’s content interactively
SYNOPSIS
gitreplace [ -f] <object> <replacement> gitreplace [ -f] --edit <object> gitreplace [ -f] --graft <commit> [<parent> ...] gitreplace [ -f] --convert -graft -file gitreplace -d <object> ... gitreplace [ --format=<format>] [ -l [<pattern>]]
DESCRIPTION
$ git --no -replace -objects cat -file commit foo .RE shows information about commit foo ,while: .RS 4
$ git cat -file commit foo .RE 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 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 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> (Aqs 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
2.3 short :<replaced sha1> '-04' '+03' .sp -1
2.3 medium :<replaced sha1> <replacement sha1> '-04' '+03' .sp -1
2.3 long :<replaced sha1> (<replaced type>) <replacement sha1> (<replacement type>)
CREATING REPLACEMENT OBJECTS
BUGS
GIT
SEE ALSO
git-hash-object(1) git-filter-branch(1) git-rebase(1) git-tag(1) git-branch(1) git-commit(1) git-var(1) git(1)