Keeping home configuration in git
Having dotfiles from the
$HOME directory in git is a great way to keep track of what's going on with some of our most
important config files.
However just creating a plain git repo won't play nice with other repos found further down in the home tree. Chances are that at some point we'll accidentally issue a git command on the home repo instead of the one we actually want to work on.
So why not make our own git command which handles the home repo exclusively.
We'll name this new command
cfg an create an alias in
~/.bashrc for it.
Since we want git to use a special
.cfg directory instead of the default one and still have the
working tree set to
$HOME the alias will look like this:
alias cfg='git --git-dir=$HOME/.cfg --work-tree=$HOME'
Now we can issue a
git init command in the home dir. If you already have a
.git directory you can
just rename it to
One tweak is configuring cfg not to show untracked files.
cfg config status.showUntrackedFiles no
If we want to be absolutely sure that we won't mistakenly add files (like the Pictures directory),
then we need to create a
.gitignore file, either with each ignored directory on a new line,
or with the wildcard symbol:
Now when adding files we have to issue a
cfg -f add command.
And we're done!