A git command inspired by the mercurial command of the same name described here.
The gist of this command is to automagically fixup or squash uncommitted (though possibly staged) modifications into the right ancestor commit (or a user specified commit) in a working branch with no user interaction.
The common use case or workflow is for e.g. to modify commits in response to issues raised during a code review, or when you change your mind about the content of existing commits in your working branch.
An alternate workflow for the above use-cases is to do an interactive rebase, mark the relevant commits with (m)odify, make changes, then do git add + git rebase --continue.
- user must specify target commit into which changes should be absorbed.
- no squash, fixup only.
- find (if it exists) the single commit that can cleanly (i.e. without merge conflicts) absorb the outstanding changes. Fail if more than one such commit exists.
- no squash, fixup only.
- Add support for --squash.