2 minutes
Setup a Git ‘dotfiles’ repository
This post covers the the basic steps to backup and sync your Linux system config files (a.k.a. dotfiles
) using a Git bare repository. The process is based on an article I found at Atlassian
which details the full process.
To set things up, use the following console commands to create a bare Git repository and the dotfiles
alias.
git init --bare $HOME/.dotfiles
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
dotfiles config --local status.showUntrackedFiles no
Once this is done, the following code must be added to the .bashrc
file in your home directory. This command recreates the dotfiles
alias on each login.
# Add alias for git dotfiles sync command
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
After the .dotfiles
repo has been created, all standard git operations are permitted, using dotfiles
instead of git
. For example, the following commands will add the .bashrc
file to your dotfiles
repository and commit the changes:
dotfiles add ~/.bashrc
dotfiles commit -am "Add .bashrc"
To backup your config files remotely and sync with other systems, first setup a Git repository on your platform of choice (e.g. GitHub ). Once this is done, the following commands will connect the remote repo and push the contents.
dotfiles remote add origin git@github.com:yourname/blank-repo.git
dotfiles push -u origin master
When setting up new systems, you can pull down your config files using a similar process. First, follow the initial steps to setup the bare repo and dotfile
sync alias. After this is done, follow these commands to connect the remote repository and pull down the last saved config.
dotfiles remote add origin git@github.com:yourname/repo-name.git
dotfiles pull origin master
Once checked out locally, everything works the same to add, update or delete configuration files and push the changes. This will also allow you to pull down any changes to your other systems, keeping them in sync.
I drafted this post primarily for my own reference but if you found it helpful, you’re welcome ツ. To contact me, please use the Contact page, or send me a direct message on Twitter .
Take care.