On Sat, Nov 9, 2024, at 12:41, Martin Imre wrote: > Hi, > > first email to this list, so please forgive me if I'm doing something wrong. > > My usual workflow is using `git commit --fixup <revision>` quite > frequently, as it eases the code reviewing process and allows for a > clean history later on. > > One thing that is always cumbersome is to first find the SHA of the > revision that I plan to commit a fixup to. > I usually use git log and then copy the revision. > I even wrote a script that eases this process using fzf: > ``` > #!/bin/bash > > res=$(git log --oneline | fzf) > ref=$(echo $res | cut -d ' ' -f1) > > git commit --fixup ${ref} > ``` > > I don't think fzf is really necessary here, but it speeds things up. > > Anyhow, I'm really surprised that this isn't a feature of git. > I could see a `git commit --fixup` (without a revision) or `git commit > --fixup --interactive` open up the git log and let one pick the > revision they want to commit a fixup to. > > Cheers, > Martin This could be useful for a lot of commands. I use git-notes(1) a lot (just as a niche example). I often wanna just get a list of the last commits (e.g. `@{u}..`) when I want to edit a note. (I should try to use fzf for that, thanks by the way!) I’m imagining that some RFC implementation of this could get replies like “but why just for `git commit --fixup/--squash…`?” As far as third-party programs are concerned: see this section of the Lazygit readme:[1] > Pressing shift+a on any commit will amend that commit with the > currently staged changes (running an interactive rebase in the > background). Not the exact same thing of course. You don’t get intermediary fixup commit since it just runs interactive rebase in the background (so it runs an uninteractive rebase…). I haven’t tried Lazygit myself. 🔗 1: https://github.com/jesseduffield/lazygit