I used to version whole home directory, turned to stow + dotfiles recently, reasons:
1. maintaining .gitignore is kind of annoying.
2. I don't need all my configuration files on some machines, say a remote sever, you can just stow what you need instead of adding many files to your home.
3. it's not convenient setting up an environment when you already have many files in home, for git clone to a directory not empty is not allowed.
my .gitignore is set to ignore everything with a wildcard and un-ignore a few hidden directories where i'm likely to place new files (e.g., .vim, .zsh)
1. maintaining .gitignore is kind of annoying.
2. I don't need all my configuration files on some machines, say a remote sever, you can just stow what you need instead of adding many files to your home.
3. it's not convenient setting up an environment when you already have many files in home, for git clone to a directory not empty is not allowed.