Skip to contentSkip to conversation

Strange behavior with git rebase (-i)

DISCUSSION Stefan (metze) Metzmacher 3 participants 5 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

Hi,

I just hit a really strange thing:

I was on a branch called 'v4-0-test',
then I did a git rebase -i orgin/v4-0-test
and removed some patches and prefixed all others
with 'edit'.
Then:

git commit --amend
git rebase --continue
git commit --amend
git rebase --continue
git commit --amend
git commit --amend (again)
git branch
* v4-0-test
git log
(this showed what I wanted)
git show -p --stat
(to really make sure that the top revision is the one I want)
git push origin v4-0-test
And this pushed the top revision BEFORE the rebase!!! Because I forgot a 'git rebase --continue' to finalize the rebase.

In the end it's my fault, because I forgot the last rebase --continue, but I think it's bad that git behaves that way.

Would it be possible to disable some operations while others are unfinished, git am (-i) might have similar effects.

I was using git 1.5.3.2

Could it be that 6fd2f5e60d4d574ff9e5dd8ce1e229328c785d69 was created to fix a similar problem?

metze

http://gitweb.samba.org/?p=samba.git;a=commit;h=ec0ee2aa5f4bef32f09a426d91c28c985f843038
and the 10 commits before...:-(

#1 lore raw

Hi,

Quoted 11 lines · Stefan (metze) Metzmacher

[started git rebase -i]
git commit --amend (again)
git branch
* v4-0-test
git log
(this showed what I wanted)
git show -p --stat
(to really make sure that the top revision is the one I want)
git push origin v4-0-test
And this pushed the top revision BEFORE the rebase!!! Because I forgot a 'git rebase --continue' to finalize the rebase.

I don't believe it. "git branch" would have shown "* (no branch)" as current branch, unless the rebase is finalized.

git rebase -i works on a _detached_ HEAD, for two reasons:

- easier working with reflogs (as the branch's reflog shows before rebase and after rebase, but nothing in between), and

- to prevent exactly the scenario you are describing.

Ciao,
Dscho

#2 lore raw
Quoted 7 lines · Johannes Schindelin

I don't believe it. "git branch" would have shown "* (no branch)" as current branch, unless the rebase is finalized.

git rebase -i works on a _detached_ HEAD, for two reasons:

Quoted 1 line · Stefan (metze) Metzmacher

I was using git 1.5.3.2

Did rebase -i in git 1.5.3.2 use a detached head? I thought that was new in 1.5.4.

Signature · 3 lines
-Steven Walter <[email protected]>
Freedom is the freedom to say that 2 + 2 = 4
B2F1 0ECC E605 7321 E818  7A65 FC81 9777 DC28 9E8F 
#3 lore raw

Hi,

Quoted 11 lines · Steven Walter
Quoted 7 lines · Johannes Schindelin

I don't believe it. "git branch" would have shown "* (no branch)" as current branch, unless the rebase is finalized.

git rebase -i works on a _detached_ HEAD, for two reasons:

Quoted 1 line · Stefan (metze) Metzmacher

I was using git 1.5.3.2

Did rebase -i in git 1.5.3.2 use a detached head? I thought that was new in 1.5.4.

rebase -i uses a detached HEAD since it was merged. In 1.5.4, rebase (note the absence of -i) uses a detached HEAD, too.

Ciao,
Dscho

#4 lore raw
Quoted 8 lines · Johannes Schindelin

Hi,

Quoted 4 lines · Steven Walter
Quoted 3 lines · Johannes Schindelin

I don't believe it. "git branch" would have shown "* (no branch)" as current branch, unless the rebase is finalized.

Quoted 8 lines
Quoted 5 lines
Quoted 3 lines

git rebase -i works on a _detached_ HEAD, for two reasons:

Quoted 1 line · Stefan (metze) Metzmacher

I was using git 1.5.3.2

Did rebase -i in git 1.5.3.2 use a detached head? I thought that was new in 1.5.4.

rebase -i uses a detached HEAD since it was merged. In 1.5.4, rebase (note the absence of -i) uses a detached HEAD, too.

Hmm, I can't reproduce this...maybe I was just to stupid and didn't look at the git branch output carefully...

metze