Prior to the installation make sure you have set the following alias to your .bashrc or .zshrc:
alias dotgit='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'And that your source repository ignores the folder where you'll clone it, so that you don't create weird recursion problems:
echo ".dotfiles" >> .gitignoreNow clone dotfiles into a bare repository in a "dot" folder of your $HOME:
git clone --bare <git-repo-url> $HOME/.dotfilesEnsure dotgit alias is defined in your current shell scope, reload your .bashrc or .zshrc if necessary.
Checkout the actual content from the bare repository to your $HOME:
dotgit checkoutThe step above might fail with a message like:
error: The following untracked working tree files would be overwritten by checkout:
.bashrc
.gitignore
Please move or remove them before you can switch branches.
AbortingThis is because your $HOME folder might already have some stock configuration files which would be overwritten by Git. The solution is simple: back up the files if you care about them, remove them if you don't care.
Re-run the check out if you had problems:
dotgit checkoutSet the flag showUntrackedFiles to no on this specific (local) repository:
dotgit config --local status.showUntrackedFiles noYou're done, from now on you can now type dotgit commands to add and update your dotfiles:
config status
config add .config/<new-file>
config commit -m "Add <new-file>"
config push