threads / bug / 47760

[bug report]: error doing_rebase

Subject: [bug report]: error doing_rebase

## tl;dr

3 messages between Feb 5, 2018 and Feb 7, 2018.

replies: 2people: 2as markdown or json

Bulat Musin· Feb 5, 2018, 19:26 UTC · lore
Hi.
To reproduce:
git init testrepo
cd testrepo
echo 1 >> file
git add file
git commit -m'1'
echo 2 >> file
git add file
git commit -m'2'
echo 3 >> file
git add file
git commit -m'3'
Now there are 3 sequential commits, I want to squash them into 1:
git rebase -i HEAD~2
In editor I changed all "pick" to "squash", saved file, I got:

error: cannot 'squash' without a previous commit You can fix this with 'git rebase --edit-todo' and then run 'git rebase --continue'. Or you can abort the rebase with 'git rebase --abort'.

However, 2.14.1 from Ubuntu's repo does the job - squashes 3 commits into 1.
Thanks.
git version 2.16.1.72.g5be1f00a9
Johannes Schindelin· Feb 6, 2018, 09:47 UTC · re: Bulat Musin · lore

Re: [bug report]: error doing_rebase

Hi,
On Mon, 5 Feb 2018, Bulat Musin wrote:
Show 7 quoted lines
> Now there are 3 sequential commits, I want to squash them into 1:
> 
> git rebase -i HEAD~2
> 
> In editor I changed all "pick" to "squash", saved file, I got:
> 
> error: cannot 'squash' without a previous commit

You cannot start with a squash. You have to pick the first one, then squash the second into the first.

> However, 2.14.1 from Ubuntu's repo does the job - squashes 3 commits into 1.

It may be careless enough to do that, however, it might now have modified the *wrong* commit, i.e. squashed the two patches *into HEAD~2*.

Please verify that your HEAD~2 is still intact and part of the rebased history, otherwise you will have a problem.

Ciao, Johannes

Johannes Schindelin· Feb 7, 2018, 14:12 UTC · lore

Re: [bug report]: error doing_rebase

Hi Bulat,

Please make sure to keep the Git mailing list in Cc: (I get *very* prickly when Git users treat me as a free-of-cost help desk, and when I get that annoyed, I stop helping).

On Tue, 6 Feb 2018, Bulat Musin wrote:
Show 5 quoted lines
> Yes, I tested again.
> 
> With built 2.16... and it shows error message. git rebase --abort restores
> 
> state before rebase.

You misunderstood me. I am convinced that that error message *is correct*. It shows an incorrect usage. You cannot start off an interactive rebase by a `squash` command.

> With git 2.14 from Ubuntu's repo it works - 3 commits are squashed into first
> one

Yes, but you called `git rebase -i HEAD~2`, which means that only two commits were up for rebasing. The third commit is outside the range `HEAD~2..` which the command `git rebase -i HEAD~2` wants to let you rebase.

If v2.14 indeed modified `HEAD~2` (as I suspected in my earlier mail), then you successfully confirmed that we fixed a bug, and that you expected the buggy behavior.

Show 5 quoted lines
> - with change SHA.
> 
> It seems to be bug in recent version.
> 
> Should I provide additional information?

Ciao, Johannes

Show 27 quoted lines
> On 02/06/2018 12:47 PM, Johannes Schindelin wrote:
> > Hi,
> >
> > On Mon, 5 Feb 2018, Bulat Musin wrote:
> >
> > > Now there are 3 sequential commits, I want to squash them into 1:
> > >
> > > git rebase -i HEAD~2
> > >
> > > In editor I changed all "pick" to "squash", saved file, I got:
> > >
> > > error: cannot 'squash' without a previous commit
> > You cannot start with a squash. You have to pick the first one, then
> > squash the second into the first.
> >
> > > However, 2.14.1 from Ubuntu's repo does the job - squashes 3 commits into
> > > 1.
> > It may be careless enough to do that, however, it might now have modified
> > the *wrong* commit, i.e. squashed the two patches *into HEAD~2*.
> >
> > Please verify that your HEAD~2 is still intact and part of the rebased
> > history, otherwise you will have a problem.
> >
> > Ciao,
> > Johannes
> 
> 

← back to recent threads