Is it bad practice to git init in the $home directory to keep track of dot files?
Create a "bare" git repository:
cd $HOME
git init --bare .dotfiles
The
--bare
flag creates a repository that doesn’t have a working directory, making it impossible to edit files and commit changes in that repository.
Create an alias to manage the repository we just created:
alias dotfiles="/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME"
Ignore the files that are not being tracked from being shown up in git status
:
dotfiles config --local status.showUntrackedFiles no
Add your desired files:
dotfiles add .bash_aliases
Commit.
dotfiles commit -m 'Add .bash_aliases'
Now with the use of a bare
repository, there is no .git
directory in your $HOME
directory; so it does not introduce any surprises while working with git
.
That's how I manage my dotfiles
. I first read about it here years ago.
It is a good practice, but you should ignore all files by default and just add the files you need. Here is an example of a .gitignore
:
# ignore all
*
# include dot files (including .gitignore)
!.*
You can also exclude other files putting other lines at the end of your .gitignore:
# ignore all
*
# include dot files (including .gitignore)
!.*
.ssh