Branches can be really useful even in a solo project. They allow you to develop new functions in isolation (if necessary), while allowing you to throw away work and / or keep it separate from the main development (so that you can launch new functions from a clean, stable part of your code base).
(You can also prevent merging fast forwarding by passing the --no-ff flag to git merge .)
source share