On Sat, Sep 17, 2022 at 04:45:17PM +0200, Erik Cervin Edin wrote: > Thank you for filling out a Git bug report! > Please answer the following questions to help us understand your issue. > > What did you do before the bug happened? (Steps to reproduce your issue) > dir=rebase-fixup-subject-equals-branch-name > mkdir $dir > cd $dir > git init --initial-branch=main > git commit -m init --allow-empty > git tag init > > # 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 Huh, this silently discards the fixup commit, without applying it. If "foo" is a valid refspec, then the autosquash machinery will apply to it all fixup commits with subject "fixup! foo". The problem you hit is that "foo" points to the fixup commit itself - which is the only destination commit that definitely won't work. Here is a possible fix: diff --git a/sequencer.c b/sequencer.c index 79dad522f5..7cbd8c2595 100644 --- a/sequencer.c +++ b/sequencer.c @@ -6231,3 +6231,3 @@ int todo_list_rearrange_squash(struct todo_list *todo_list) (commit2 = - lookup_commit_reference_by_name(p)) && + lookup_commit_reference_by_name(p)) != item->commit && *commit_todo_item_at(&commit_todo, commit2))