# merging branches with separate but identical history

3 messages from 2010-08-31 to 2010-09-01. Participants: Craig de Stigter, Jonathan Nieder, Henrik Grubbström.
Thread: https://gitlist.dev/t/24925

## Craig de Stigter, 2010-08-31 21:01

Subject: merging branches with separate but identical history
Message-ID: <AANLkTikTzZe=c=RaEYSr_wjfHht4PZihggnV9vEOehvy@mail.gmail.com>
URL: https://gitlist.dev/e/AANLkTikTzZe%3Dc%3DRaEYSr_wjfHht4PZihggnV9vEOehvy%40mail.gmail.com
In-Reply-To: <AANLkTikoDkhKTRmob=B_NYJSYoby0J3Zo-Qp43AU9WfZ@mail.gmail.com>

```
Hi list

I have two branches which start with the same commits, and I want to merge them.
I believe the two branches were individually pulled from the same SVN
repo, so they look like this:

branch1: a--b--c--d--e--f--1--3--5
branch2: a--b--c--d--e--f--2--4--6

If I do:
> git checkout branch1
> git merge branch2
Merge made by recursive

The merge succeeds but the commits in each branch aren't squashed
together (git log shows two commits for each actual commit)
 i.e., now my history looks like this:

a--a--b--b--c--c--d--d--e--e--f--f--1--2--3--4--5--6

Is there a way to do this without the duplicates? (perhaps a way to
mark the branch as merged up to 'f', without actually performing a
merge?)

Thanks
Craig de Stigter
--
Koordinates Ltd
PO Box 1604, Shortland St, Auckland, New Zealand
Phone +64-9-966 0433 Fax +64-9-969 0045
Web http://www.koordinates.com

```

## Jonathan Nieder, 2010-08-31 21:16

Subject: Re: merging branches with separate but identical history
Message-ID: <20100831211602.GF5911@burratino>
URL: https://gitlist.dev/e/20100831211602.GF5911%40burratino
In-Reply-To: <AANLkTikTzZe=c=RaEYSr_wjfHht4PZihggnV9vEOehvy@mail.gmail.com>

```
Hi,

Craig de Stigter wrote:

> I have two branches which start with the same commits, and I want to merge them.
> I believe the two branches were individually pulled from the same SVN
> repo
[...]
> If I do:
>> git checkout branch1
>> git merge branch2
> Merge made by recursive
> 
> The merge succeeds but the commits in each branch aren't squashed
> together (git log shows two commits for each actual commit)
>  i.e., now my history looks like this:
> 
> a--a--b--b--c--c--d--d--e--e--f--f--1--2--3--4--5--6
> 
> Is there a way to do this without the duplicates? (perhaps a way to
> mark the branch as merged up to 'f', without actually performing a
> merge?)

No.  I would suggest trying

 git cat-file commit a
 git cat-file commit A

where a and A are the two versions of "a" and comparing them.
How do they differ?

If you don't care about superseding the old history and just want
to combine the two branches into a single history, you can try something
like this:

 $ git checkout branch1
 $ git rebase -i branch1~3 --onto branch2~3
 $ git merge branch2

If the history after the fork point is not linear, you can still do
something very similar with grafts.  See git-filter-branch(1) for
details.

Hope that helps,
Jonathan

```

## Henrik Grubbström, 2010-09-01 12:35

Subject: Re: merging branches with separate but identical history
Message-ID: <loom.20100901T142437-744@post.gmane.org>
URL: https://gitlist.dev/e/loom.20100901T142437-744%40post.gmane.org
In-Reply-To: <AANLkTikTzZe=c=RaEYSr_wjfHht4PZihggnV9vEOehvy@mail.gmail.com>

```
Craig de Stigter <craig.destigter <at> koordinates.com> writes:

> Hi list

Hi.

> I have two branches which start with the same commits, and I want to merge
> them.
> I believe the two branches were individually pulled from the same SVN
> repo, so they look like this:
> 
> branch1: a--b--c--d--e--f--1--3--5
> branch2: a--b--c--d--e--f--2--4--6
[...]
> Is there a way to do this without the duplicates? (perhaps a way to
> mark the branch as merged up to 'f', without actually performing a
> merge?)

Yes, you can use grafts (cf gitrepository-layout(5)) to rewrite the parent
pointer for eg commit 2 from f(2) to f(1).

> Thanks
> Craig de Stigter

-- 
Henrik Grubbström                                         <grubba@grubba.org>
Roxen Internet Software AB                                <grubba@roxen.com>

```
