# rebase converts merge commits

5 messages from 2010-10-12 to 2010-10-17. Participants: Sébastien Barthélemy, Matthijs Kooijman, Kevin Ballard.
Thread: https://gitlist.dev/t/25428

## Sébastien Barthélemy, 2010-10-12 14:55

Subject: rebase converts merge commits
Message-ID: <AANLkTikz0yUv9+EcT-kVwniUf9xnRe=_y96euNb=stzP@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTikz0yUv9%2BEcT-kVwniUf9xnRe%3D_y96euNb%3DstzP%40mail.gmail.com

```
Hello,

first of all, thank you for git this is a wonderful tool.

Yet, I have a problem while trying to rebase a bit of history which contains
merge commits.

I'm not sure whether I misuse something or whether this is a know (but
not documented?) limitation.

Here is more context.

I have the following history

* commit e1adb4bcd07372024689c697c56249ca6c044009
|
|     fixed  maintainer field
|
* commit 6aca4f53e8b7647df96dcd2caacde5883f9c67c5
|
|     updated changelog for release 2.9.9-0ubuntu1
|
* commit 96d69d992afae69a8caba07ab9b5b6e5ed7d35d8
|
|     updated lintian warning override
|
*   commit 53171e21222b6a7fcb25620b1c30e427b9ada6a6
|\  Merge: 2d58bfe 4f3385d
| |
| |     merged release 2.9.9
| |
| * commit 4f3385dd9cf129cb0d65c9fb3895fe61a03b8b59
| |
| |     upstream 2.9.9 (developer) release
| |
* | commit 2d58bfed1cc234b5a76bde8216298a72db29aacc
| |
| |     updated maintainer field
| |
* | commit 05b4de27b993dde0cc779364fa24223f29e66b0e
| |
| |     changelog for 2.9.8-0ubuntu5
| |
...


commit 2d58bfe introduced a trivial error that got fixed in commit e1adb4b.

I would like to manipulate the history to get these two commits subsequent
(or even merge them). Eventually I'd like to get this history

* commit 6aca4f53e8b7647df96dcd2caacde5883f9c67c5'
|
|     updated changelog for release 2.9.9-0ubuntu1
|
* commit 96d69d992afae69a8caba07ab9b5b6e5ed7d35d8'
|
|     updated lintian warning override
|
*   commit 53171e21222b6a7fcb25620b1c30e427b9ada6a6'
|\  Merge: e1adb4' 4f3385d
| |
| |     merged release 2.9.9
| |
| * commit 4f3385dd9cf129cb0d65c9fb3895fe61a03b8b59
| |
| |     upstream 2.9.9 (developer) release
| |
* | commit e1adb4bcd07372024689c697c56249ca6c044009'
| |
| |     fixed  maintainer field
| |
* | commit 2d58bfed1cc234b5a76bde8216298a72db29aacc
| |
| |     updated maintainer field
| |
* | commit 05b4de27b993dde0cc779364fa24223f29e66b0e
| |
| |     changelog for 2.9.8-0ubuntu5
| |
...

I tried with rebase -i, but it converts the merge commit into a normal commit.
Moreover, it asks me to resolve the merge conflict again.

I think this is a limitation of rebase, but I haven't read it stated anywhere,
so here I am, asking for a confirmation.

By the way, if there is a way to do what I want, please tell me.

I'm using git version 1.7.0.4.

Cheers

-- 
Sebastian

```

## Matthijs Kooijman, 2010-10-12 14:58

Subject: Re: rebase converts merge commits
Message-ID: <20101012145824.GF22067@login.drsnuggles.stderr.nl>
URL: https://gitlist.dev/e/20101012145824.GF22067%40login.drsnuggles.stderr.nl
In-Reply-To: <AANLkTikz0yUv9+EcT-kVwniUf9xnRe=_y96euNb=stzP@mail.gmail.com>

```
Hi Sébastien,

> Yet, I have a problem while trying to rebase a bit of history which contains
> merge commits.

Have you tried the --preserve-merges option to rebase?

Gr.

Matthijs

```

## Sébastien Barthélemy, 2010-10-12 15:23

Subject: Re: rebase converts merge commits
Message-ID: <AANLkTinZzBGtC9q7J=xD1e7c80O4THdP00+mp==8hbQA@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTinZzBGtC9q7J%3DxD1e7c80O4THdP00%2Bmp%3D%3D8hbQA%40mail.gmail.com
In-Reply-To: <20101012145824.GF22067@login.drsnuggles.stderr.nl>

```
Hi Matthijs,

2010/10/12 Matthijs Kooijman <matthijs@stdin.nl>:
> Have you tried the --preserve-merges option to rebase?

No, I didn't know about this option. Thank you for the tip.

I just tried, and it does not work either. The merge commit is
preserved, but the commit I'm push back in time is lost.

There is a warning against this kind behaviour when using both
--interactive and rebase.

Thanks,
-- 
Sebastian

```

## Kevin Ballard, 2010-10-12 20:27

Subject: Re: rebase converts merge commits
Message-ID: <523A21BF-F6A1-4BF2-8385-941B61BA769F@sb.org>
URL: https://gitlist.dev/e/523A21BF-F6A1-4BF2-8385-941B61BA769F%40sb.org
In-Reply-To: <AANLkTikz0yUv9+EcT-kVwniUf9xnRe=_y96euNb=stzP@mail.gmail.com>

```
On Oct 12, 2010, at 7:55 AM, Sébastien Barthélemy wrote:

> By the way, if there is a way to do what I want, please tell me.

Your history is short enough that if you can't get rebase to do what you want, you could always do it by hand. Create a temp branch to work on based on the bad commit, cherry-pick the good commit with --no-commit, then amend the bad commit. Then just cherry-pick each subsequent commit until you get to the merge. Re-perform the merge. Then just continue to cherry-pick subsequent commits. It's not ideal, but it should work.

-Kevin Ballard
```

## Sébastien Barthélemy, 2010-10-17 08:04

Subject: Re: rebase converts merge commits
Message-ID: <AANLkTinJPqnazW26KA3Heb1MSwaKYoBA2JRVZ0wFywkK@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTinJPqnazW26KA3Heb1MSwaKYoBA2JRVZ0wFywkK%40mail.gmail.com
In-Reply-To: <523A21BF-F6A1-4BF2-8385-941B61BA769F@sb.org>

```
2010/10/12 Kevin Ballard <kevin@sb.org>:
> On Oct 12, 2010, at 7:55 AM, Sébastien Barthélemy wrote:
>
>> By the way, if there is a way to do what I want, please tell me.
>
> Your history is short enough that if you can't get rebase to do what you want, you could always do it by hand.

Sure. Thank you for making it clear.

```
