Michał Kalbarczyk

Best dotfiles manager is GIT

20 March 2023 - Reading time: 2 minutes

Long story short. Tried lot of dotfiles managers including custom solutions. All of them have a big disadvantage. You have a copy of a file or symlink. What do we need? Just git. Let’s start!

First of all we need a shell alias to manage our files.

I’m using fish so creating alias looks like this.

$ alias hi "echo hello"

But you can do same thing in bash as well:

$ alias hi="echo hello"

Let’s name our alias dot.

Just add such a line in your shell config file.

Depending on our needs we can:

Allow to backup files on whole disk:

alias dot "git --git-dir=$HOME/.dotfiles --work-tree=/"

Or just in the home directory:

alias dot "git --git-dir=$HOME/.dotfiles --work-tree=$HOME"

Great. We’re just made an dot manager!

Let’s init out repo

$ dot init

One more thing! Need to set up one thing:

$ dot config --local status.showUntrackedFiles no

And we’re done. All git files are in $HOME/.dotfiles directory.

To add a file or directory we can simply:

$ dot add ~/.config

and commit it with

$ dot commit

The backup is a git repository. We can push it to github for example. Just add remote like on every other git repository.

Just like you saw. There is no copying, linking, just adding a files when something changed.