If you're working alone or in a tightly-knit group you may be better of keeping all of these in ~/.gitignore; but if you want to be able to share with an unspecified contributors down the line, you can just keep a project-specific .gitignore under version control. Git is really flexible. As for being hard to learn, you just have to explain the basic conceptual framework — git parable does a good job of that. There are some really simple interfaces for git — Gitbox and Tower come to mind.