# How to rebase after upstream was merged?

3 messages from 2007-07-04 to 2007-07-04. Participants: Johannes Sixt, Johannes Schindelin.
Thread: https://gitlist.dev/t/8859

## Johannes Sixt, 2007-07-04 12:24

Subject: How to rebase after upstream was merged?
Message-ID: <468B918E.FBCADCB9@eudaptics.com>
URL: https://gitlist.dev/e/468B918E.FBCADCB9%40eudaptics.com

```
I have this history:

o--o--o--o--o   <- origin
    \        \
     x--x--x--M--x--x  <- master (HEAD)

At this point I would like to rebase to straighten the history, but it
won't let me:

    $ git rebase origin
    Current branch master is up to date.

However, if there were additional commits on origin, it would work as
expected, i.e. all the 'x', but not 'M',  would be moved on top of
origin. The reason is that rebase checks whether the merge base of
origin and HEAD is origin, and exits early if it is.

I would like to extend the check to also check for linear history. How
can I do this most efficiently? My first try is along these lines:

  test $(git rev-list origin..HEAD | wc -l) = \
       $(git rev-list --no-merges origin..HEAD | wc -l)

Is there a better approach?

-- Hannes

```

## Johannes Schindelin, 2007-07-04 13:30

Subject: Re: How to rebase after upstream was merged?
Message-ID: <Pine.LNX.4.64.0707041426570.4071@racer.site>
URL: https://gitlist.dev/e/Pine.LNX.4.64.0707041426570.4071%40racer.site
In-Reply-To: <468B918E.FBCADCB9@eudaptics.com>

```
Hi,

On Wed, 4 Jul 2007, Johannes Sixt wrote:

> I have this history:
> 
> o--o--o--o--o   <- origin
>     \        \
>      x--x--x--M--x--x  <- master (HEAD)
> 
> At this point I would like to rebase to straighten the history, but it
> won't let me:
> 
>     $ git rebase origin
>     Current branch master is up to date.

I'd do something like

$ git checkout -b tmp HEAD~3
$ git rebase origin
$ git checkout master
$ git rebase --onto tmp HEAD~2
$ git branch -d tmp

> I would like to extend the check to also check for linear history. How
> can I do this most efficiently? My first try is along these lines:
> 
>   test $(git rev-list origin..HEAD | wc -l) = \
>        $(git rev-list --no-merges origin..HEAD | wc -l)
> 
> Is there a better approach?

I usually to

	test -z "$(git rev-list --parents origin..HEAD | grep " .* ")"

Hth,
Dscho

```

## Johannes Sixt, 2007-07-04 13:45

Subject: Re: How to rebase after upstream was merged?
Message-ID: <468BA46A.C66E85CA@eudaptics.com>
URL: https://gitlist.dev/e/468BA46A.C66E85CA%40eudaptics.com
In-Reply-To: <Pine.LNX.4.64.0707041426570.4071@racer.site>

```
Johannes Schindelin wrote:
> [...how to check for linear history...]
> I usually to
> 
>         test -z "$(git rev-list --parents origin..HEAD | grep " .* ")"

Ah, that's much better.

Thanks,
-- Hannes

```
