git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Alter parent ID of existing commit object

From
Jakub Narebski <jnareb@gmail.com>
Date
Apr 26, 2010, 23:34 UTC
Message-ID
<m31ve1eqm1.fsf@localhost.localdomain>
In-Reply-To
<20100426103637.GA8896@progeny.tock>
Jonathan Nieder <jrnieder@gmail.com> writes:
Show 14 quoted lines
> Hi Paul,
> 
> Paul Richards wrote:
> 
> > Is it possible to edit an old commit object and only alter the ID of
> > the parent commit but otherwise leave all the other information intact
> > (tree, message, authors, date, etc).
> > 
> > I'd expect such a command to return the new hash of the modified commit.
> 
> The standard answer to this question is to say “use grafts and
> filter-branch”.  The git-filter-branch(1) man page explains this
> approach.  It is very powerful, but sometimes I do not want to have
> that much power.

This also rewrites history up from the changed commit, which is something that you need to take into account. It is IMVHO best solution if rewritten part of history was not published, e.g. in the case of private repository / private development.

In the case of already published history you can use "git replace" mechanism instead (with git-cat-file + git-hash-object).

Grafts _without_ using "git filter-branch" do not rewrite history, but are not transferrable. The modern 'refs/replaces/*' mechanism is.

Just FYI, as I guess in your situation grafts+git-filter-branch would be best solution (after running git-filter-branch you can remove graft).

-- 
Jakub Narebski
Poland
ShadeHawk on #git
Previous: Paul Richards
Message 4 of 4 in “Alter parent ID of existing commit object”
  1. Paul RichardsApr 26, 2010
  2. Jonathan NiederApr 26, 2010
  3. Paul RichardsApr 26, 2010
  4. Jakub NarebskiApr 26, 2010

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.