When working on a branch with multiple commits, you can “go back in time” and revise previous commits any way you please.
git rebase -i origin/master
This command will prompt you inside of your
$VISUAL with a series of commit SHAs
and commit titles:
# ... pick ed1ff41 Move templates pick 274ac0e Move components & views # ...
To split up
edit and save the buffer.
# ... pick ed1ff41 Move templates edit 274ac0e Move components & views # ...
You are now detached from the
HEAD of your branch and “back in time”.
To split up the current commit (
git reset HEAD~
This will unstage all files within the commit. Next, split up the commit any way you’d like.
git add app/views git commit -m "Move views" git add app/components git commit -m "Move components"
When you’re finished, continue the rebase.
git rebase --continue
If you introduced merge conflicts down the line, you’ll have to resolve them. If all went well, your branch’s history will be re-written.
git log origin/master.. # ... ed1ff41 Move templates 7b84a01 Move views 274ac0e Move components # ...
Keep in mind that you might have to force push your branch to
depending on whether or not your revised commits have been pushed.
git push origin my-branch-name --force