Git already works like this. It won't commit anything unless you explicitly stage it first.
Yes, but people miss often what is committed, especially if the change is big.
Eh? You explicitly have to add files to the stage before git will commit anything.