Dotfiles, the Prequel: Easy and Fast

Jonathan Bowman Created: February 07, 2021 Updated: July 10, 2023 [Dev] #dotfiles #commandline #git ~/.*

In my ongoing quest to explore a variety of ways of managing config files, I believe I have found a way that is attractively simple.

In the following steps, the $REPO_URL should be replaced with (or assigned a value of) the remote URL for the git repo you are using to store your dotfiles. It may look like [email protected]:USERNAME/dotfiles.git or https://github.com/USERNAME/dotfiles.git, for instance, with your username in place of USERNAME and your repository name in place of dotfiles.

πŸ”—Step one: git clone

cd ~
git clone -c status.showUntrackedFiles=no -n --separate-git-dir .git $REPO_URL tmpdir
rm -r tmpdir

Rationale:

πŸ”—Step two for non-empty repo: git checkout

git checkout

Deal with any file conflicts. For instance, you might backup and remove an existing .bashrc. Then run git checkout again. If you are sure that overwriting is OK, you can pass the force flag:

git checkout -f

πŸ”—Step two if new (empty) repo: add files and push

If this is a brand new setup, your repo is likely empty. Add some files:

git add .bashrc
git commit -m "initial commit of Bash config"

Repeat as necessary with additional files and directories. Then push:

git push

πŸ”—Step three: maintain

Keep your files up to date with git add, git commit, git push. Pull remote changes with git pull. In other words, manage your home directory as you would any other Git repo. Please avoid git add . as that will track every file in your home directory, an undesirable endeavor.

If this spawns other creative ideas or optimizations, feel free to send me feedback!

Back to top