14 March 2024

Splitting a Git commit into multiple commits

To split a commit into multiple commits I’ve used the following workflow:

  • Do an interactive rebase from an earlier commit.

  • Change the command for the commit(s) to split to edit.

  • When you run the rebase, you’ll be dropped back into the shell for each commit, at that commit (after the commit has been applied).

  • Reset to HEAD~1 to undo the commit.

  • git add -p to create the new commits.

  • Commit as normal.

  • git rebase --continue to continue the interactive rebase. If there are no more interactive actions to do, you’re done.

See https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History#_splitting_a_commit.