by @johnie
Create semantically correct, granular git commits by analyzing staged and unstaged changes