all of this because dotfiles are in your home directory along with a lot of other stuff you want to ignore. There is a very simple way to take care of this, let's get started.
First, you'll need a git repository. So cd into your home directory and type
git init
Now run the following command
git status
you should see a gigantic list of files. Some we want to version with git, most we do not.
Now here's the first trick. We want git to ignore everything by default, so we type:
echo "*" > .gitignore
Now run 'git status' again and git will tell you there's nothing to add to the repository. Excellent!
At this point you have a choice. You can manually add the dotfiles you want to version by prefixing their name with a '!' like this:
echo "!.vim" >> .gitignore
This makes for a short .gitignore file, but git won't tell you when new dotfiles are added - they'll be globally ignored along with everything else. That may be fine for some, but I like to know when new dot files are created.
To do this, I told git not to ignore anything that was prefixed with a '.'. My .gitignore file now looks like this:
/*
!.*
Now when you run 'git status' you get a big list of all the dotfiles that have not been versioned, most of these we want to ignore. So we capture the output in a file:
git status > unversioned
Open 'unversioned' and '.gitignore' in your favorite editor, copy the file list from 'unversioned' to the bottom of '.gitignore'. Now remove everything that you *DO* want to version. Be careful not to ignore your '.gitignore' file! That'd be silly.
Finally, add and commit your changes normally:
git commit -a -m "hey dotfiles! woohoo!"
That's it! If you want to store your dotfiles on github create a repo and follow their instructions for setting up github with an existing git repository.
You can see my dotfiles repo here
Cheers!