Thread (7 messages) flat view 7 messages, 4 authors, 2023-01-07

Re: bug?: ORIG_HEAD incorrect after reset during git-rebase -i

From: Philippe Blain <hidden>
Date: 2023-01-05 00:14:04

Hi Phillip and Erik,

Le 2021-12-16 à 11:44, Erik Cervin Edin a écrit :
Hi Phillip,

Yes, I know.
It's just that I was under the impression ORIG_HEAD was to be reverted
to .git/rebase-merge/orig-head at the finish of the rebase.
Personally, it's the behavior I would expect.

Thanks for the tips.
I just hit the same bug (I think it qualifies as one). In fact git-rebase(1) explicitely mentions
that ORIG_HEAD is set to the branch tip before the rebase starts:

$ git grep -C2 ORIG_HEAD Documentation/git-rebase.txt
Documentation/git-rebase.txt-36-The current branch is reset to `<upstream>` or `<newbase>` if the
Documentation/git-rebase.txt-37-`--onto` option was supplied.  This has the exact same effect as
Documentation/git-rebase.txt:38:50:`git reset --hard <upstream>` (or `<newbase>`). `ORIG_HEAD` is set
Documentation/git-rebase.txt-39-to point at the tip of the branch before the reset.
Documentation/git-rebase.txt-40-

Here is my runnable reproducer. It is slightly more complicated than Erik's, since
I split the second commit in two, but this is not necessary to trigger the bug; just
running 'git reset HEAD^' as Erik wrote is enough.
#!/bin/bash
rm -rf repro
git init repro
(
cd repro
# Create 3 commits
cat << EOF >test
hello
every
one
EOF
git add test
git commit -m initial
cat << EOF >test
hello

add new lines

every

and also here

one
EOF
git commit -am second
cat << EOF >test
hello

add new lines

every

and also here

one

still more changes
EOF
git commit -am third
# Rebase to split the second commit
GIT_SEQUENCE_EDITOR="sed -ie '1 s/^p /e /'" git rebase -i HEAD~2
git reset HEAD^
cat << EOF >test
hello

add new lines

every
one
EOF
git ci -am "second 1/2"
cat <<EOF >test
hello

add new lines

every

and also here

one
EOF
git ci -am "second 2/2"
# Finish rebase and demonstrate bug
git rebase --continue
echo ---
echo "@{1} is :"
git log -1 @{1}
echo "ORIG_HEAD is :"
git log -1 ORIG_HEAD

)
Cheers,

Philippe.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help