Who needs separate commits?
Understanding the graph and how commits fit in to it is essential to mastering git.
It’s hard to fully understand it without being able to see it.
You can view the graph from the command line but most modern git GUIs are based on a visualization of the graph.
Hard
Hard (Branch)
Soft
You can choose to commit immediately or not
Useful for "manually rebasing" difficult branches
Cherrypick commit you want to split to a new branch (don't commit immediately)
Stage and commit changes as needed
Cherrypick remaining commits