# Undoing merges

3 messages from 2009-12-08 to 2009-12-14. Participants: Richard, Matthieu Moy.
Thread: https://gitlist.dev/t/21908

## Richard, 2009-12-08 16:37

Subject: Undoing merges
Message-ID: <8440EA2C12E50645A68C4AA98871665131D8D8@SERVER.webdezign.local>
URL: https://gitlist.dev/e/8440EA2C12E50645A68C4AA98871665131D8D8%40SERVER.webdezign.local

```
Hi git list,

I'm trying to find out how to undo a merge. I know that my branches are
independent and that I can just carry on working on them and merge again
later, but I'm just trying to keep my revision graph tidier. Should I
even be undoing merges?

I've searched around, but I can seem to find an answer I can follow.

Regards,

Richard

```

## Matthieu Moy, 2009-12-08 17:48

Subject: Re: Undoing merges
Message-ID: <vpqpr6pqrvq.fsf@bauges.imag.fr>
URL: https://gitlist.dev/e/vpqpr6pqrvq.fsf%40bauges.imag.fr
In-Reply-To: <8440EA2C12E50645A68C4AA98871665131D8D8@SERVER.webdezign.local>

```
"Richard" <richard@webdezign.co.uk> writes:

> Hi git list,
>
> I'm trying to find out how to undo a merge.

When sitting on a merge commit,

  git reset --merge HEAD^

will undo this merge commit (i.e. pretend the merge has never occured,
at least in your branch). Don't do that if you already published this
merge commit.

> I know that my branches are independent and that I can just carry on
> working on them and merge again later, but I'm just trying to keep
> my revision graph tidier. Should I even be undoing merges?

If it's about cleaning up your history, "git rebase" is your friend,
too (with the same limitation: don't do that on published history). By
default, it does some kind of history flattening.

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/

```

## Richard, 2009-12-14 11:45

Subject: RE: Undoing merges
Message-ID: <8440EA2C12E50645A68C4AA98871665131D9AC@SERVER.webdezign.local>
URL: https://gitlist.dev/e/8440EA2C12E50645A68C4AA98871665131D9AC%40SERVER.webdezign.local
In-Reply-To: <vpqpr6pqrvq.fsf@bauges.imag.fr>

```
Hi again Matt,

Thanks for the reply.

> > Hi git list,
> >
> > I'm trying to find out how to undo a merge.
> 
> When sitting on a merge commit,
> 
>   git reset --merge HEAD^
> 
> will undo this merge commit (i.e. pretend the merge has never
> occurred, at least in your branch). Don't do that if you already
> published this merge commit.

The problem that I'm far past the merge commit.

> > I know that my branches are independent and that I can just carry on
> > working on them and merge again later, but I'm just trying to keep
> > my revision graph tidier. Should I even be undoing merges?
> 
> If it's about cleaning up your history, "git rebase" is your friend,
> too (with the same limitation: don't do that on published history). By
> default, it does some kind of history flattening.

I had a look at the git-rebase man page and it showed to remove a commit
from the middle of a range of commits. I think as I am on longer on the
merge commit and cannot use "git reset --merge HEAD^", I can rebase all
the commits from the commit just after the merge onto the commit just
before the merge and that will remove the merge. Unfortunately I didn't
get a change to try that out so I don't know whether it will work or
not.

Richard

```
