I use:<p><pre><code>    git init --bare $HOME&#x2F;.myconf
    alias config=&#x27;&#x2F;usr&#x2F;bin&#x2F;git --git-dir=$HOME&#x2F;.myconf&#x2F; --work-tree=$HOME&#x27;
    config config status.showUntrackedFiles no
</code></pre>
where my ~&#x2F;.myconf directory is a git bare repository. Then any file within the home folder can be versioned with normal commands like:<p><pre><code>    config status
    config add .vimrc
    config commit -m &quot;Add vimrc&quot;
    config add .config&#x2F;redshift.conf
    config commit -m &quot;Add redshift config&quot;
    config push
</code></pre>
And so one…<p>No extra tooling, no symlinks, files are tracked on a version control system, you can use different branches for different computers, you can replicate you configuration easily on new installation.