I want to put my home directory (~) under source control (git, in this case), as I have many setting files (.gitconfig, .gitignore, .emacs, etc.) in there I would like to carry across machines, and having them in Git would make it nice for retrieving them.  My main machine is my MacBook, and the way that OS X is set up, there are many folders I want to ignore (Documents, Downloads, .ssh).  There are also folders which are already using Git (.emacs.d).  My thought was to just add all these directories to my .gitignore file, but that seems kind of tiresome, and could potentially lead to some unforeseen consequences.  My next thought was to periodically copy the files I want to store into some folder in home, then commit that folder.  The problem with that will be that I have to remember to move them before committing.Is there a clean way to do this?
Tips for putting ~ under source control
settings;git;version control
I have $HOME under git. The first line of my .gitignore file is/*The rest are patterns to not ignore using the ! modifier. This first line means the default is to ignore all files in my home directory. Those files that I want to version control go into .gitignore like this:!/.gitignore!/.profile[...]A trickier pattern I have is:!/.ssh/.ssh/*!/.ssh/configThat is, I only want to version .ssh/config - I don't want my keys and other files in .ssh to go into git. The above is how I achieve that.Edit: Added slashes to start of all paths. This makes the ignore patterns match from the top of the repository ($HOME) instead of anywhere. For example, if !lib/ was a pattern (dont ignore everything in the lib directory) and you add a file .gitignore, previously the pattern (!.gitignore) was matching that. With the leading slash (!/.gitignore), it will only match .gitignore in my home directory and not in any subdirectories.I haven't seen a case where this makes a practical difference with my ignore list, but it appears to me to be more technically accurate.