Elijah Newren <newren@xxxxxxxxx> writes: > Of course, the same applies to edit/squash/fixup/reword, though if I > could go back in time...(warning, long tangent coming)...I would make > it so those four directives did not accept any commit ID argument. > Only "pick" and "reset" would accept a commit ID. Instead, today's > "edit X" would be two commands ("pick X" followed by either "break" or > "edit"), "fixup X" would be "pick X" + "fixup", and "reword X" would > be "pick X" + "reword". That'd help users understand rebase state > much better (it's so easy for users to get confused by whether they > should be using `git commit --amend` vs. `git rebase --continue` and I > think this is partially to blame, though there's other changes we > could make to help with that dichotomy as well). The separate > directives would also make it much easier to figure out how to both > fixup and edit a single commit in the same rebase (pick the commit, > then add a fixup directive, then an edit directive). Intriguing, and I feel sad that it probably is too late for all of the above X-<. > In fact, "squash > X" could just be discarded as superfluous, since it's just "pick X" + > "fixup" + "reword" (or we could keep squash as an abbreviation for > both "fixup" + "reword"). IIUC, your "fixup" is git reset --soft HEAD^ git commit --amend --no-edit i.e. discard the log message from "fixup" and use only its tree, and your "reword" is git commit --amend --edit so "pick X" + "fixup" + "reword" would not be quite usable as a replacement of our "squash X" (or your "pick X" + "squash"), I am afraid. You'd want the log message from "X" as well as "X^" to edit the replacement of X^.