Looking for .git in all the wrong places
Like many of you, I store my dotfiles in Git repos. However, I quickly encountered a problem with this approach: my configurations would often get out of sync between my various machines. Instead of writing a script to check for updates or just being diligent about it, I decided that I would integrate my configurations into something on my machines that check for updates already: the system package manager!
Unfortuantely, fixing that problem created a new one. I used to have each configuration directory checked out as a Git repository, so to change or fix something, I only had to make the change, test, commit, and push. But now, it seems that I need to sync my changes between my config directory and a clone to commit and push. However, there's a better way!
Although Git looks for
.git in an ancestor directory by default, you can override its normal logic for finding the repository directory via the
GIT_DIR environment variable. Which means if I want to make a local
change and push it, I only need to do the following prep work:
$ cd ~/.vim $ export GIT_DIR=~/projects/vimfiles/.git
Now all of the regular Git commands work as if
~/.vim were a normal repository! Interestingly enough, there is a companion environment variable,
tells Git where the working directory is; if you want to do things the other way around.