Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
Git aliases to make new commits that fixup or are squashed into previous commits
[alias]
fixup = !sh -c 'REV=$(git rev-parse $1) && git commit --fixup $@ && git rebase -i --autosquash $REV^' -
squash = !sh -c 'REV=$(git rev-parse $1) && git commit --squash $@ && git rebase -i --autosquash $REV^' -
$ git commit -am 'bad commit'
$ git commit -am 'good commit'
# Stage changes to correct the bad commit
$ git add .
# Fixup the bad commit. HEAD^ can be replaced by the SHA of the bad commit
$ git fixup HEAD^

You can even skip a step for fixup if you set the git-editor to true:
fixup = !sh -c 'REV=$(git rev-parse $1) && git commit --fixup $@ && GIT_SEQUENCE_EDITOR=true git rebase -i --autosquash $REV^' -

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment