git commit explained