On Sat, Sep 17, 2022, 8:04 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > > # failure > > seq 1 3 >> bar && git add bar && git commit -m main > > git tag -f x > > seq 4 6 >> bar && git add bar && git commit -m bar > > seq 7 9 >> bar && git add bar && git commit --fixup :/main > > git -c sequence.editor=: rebase --autosquash --interactive x > > git diff ORIG_HEAD > > So near the bottom there are "init", and "x". The commit title of > "x" is "main" and that is what the fix-up intends to amend. Yes, sorry if that was unclear. So the branch looks like 474b082 (HEAD -> main) fixup! main acd367f bar 576294e (tag: x) main dd27847 (tag: init) init so git -c sequence.editor rebase -i --autosquash x should yield 474b082 (HEAD -> main) fixup! main acd367f bar 576294e (tag: x) main dd27847 (tag: init) init ie. no change, but instead yields acd367f (HEAD -> main) bar 576294e (tag: x) main dd27847 (tag: init) init ie. it drops the fixup! main commit but only if it's the first commit, see second example I posted On Sat, Sep 17, 2022 at 4:45 PM Erik Cervin Edin <erik@xxxxxxxxxxx> wrote: > # normal > git reset --hard init > seq 1 3 >> bar && git add bar && git commit -m main > git tag -f x > seq 4 6 >> bar && git add bar && git commit --fixup :/main > seq 7 9 >> bar && git add bar && git commit -m bar > git -c sequence.editor=: rebase --autosquash --interactive x > git diff ORIG_HEAD yields acd367f (HEAD -> main) bar 474b082 fixup! main 576294e (tag: x) main dd27847 (tag: init) init as expected. > But then I do not think there is any valid expectation if you say > "keep x intact and rebase everything above", which is what the > command line arguments tell the last command to do. Perhaps we > should keep all original commits up to that "fixup" one without any > reordering or squashing? I'm not sure I follow but the report is concerning the unexpected behavior of dropping the commit under these specific conditions. I'm not 100% sure but as I recall, this only happens in situation where the fixup may not be applied (and in which case it should remain as is). > The title of your bug report is also curious. What happens if you > did > > git branch -m master that works as expected git reset --hard init seq 1 3 >> bar && git add bar && git commit -m main git tag -f x seq 4 6 >> bar && git add bar && git commit -m bar seq 7 9 >> bar && git add bar && git commit --fixup :/main git branch -m master git -c sequence.editor=: rebase --autosquash --interactive x but changing branch -m to switch -c reproduces the bug 6650ace (HEAD -> master) bar 7835cd5 (tag: x) main 368ed2f (tag: init) init Hope this better clarifies what is going on!