How To Manage Dotfiles
Introduction
When your OS crashes or you needed to change it, you will reconfigure .dotfiles
such as .zsh
, .gitconfig
and .vimrc
. These .dotfiles
change over time as you start customizing linux according to your needs. How do we save this configurations to avoid manual work every time ? The answer is Dotfiles Manager.
How to build a Dotfile Manager
There are alot of Dotfile Managers out there, for example atlassian, yadm and more here. I prefer the scratch way.
First of all, you should Create a new repository on GitHub named .dotfiles
and clone it in the $HOME directory where you will host your dotfiles. Clone your repo to the .dotfiles
directory
SSH
git clone git@github.com:<YOUR_GITHUB_USERNAME>/.dotfiles.git ~/.dotfiles
HTTPS
git clone https://github.com/<YOUR_GITHUB_USERNAME>/.dotfiles.git ~/.dotfiles
Now, you have an empty directory. The next step is to add your files in it. Move your files to ~/.dotfiles
.
For simplicity, we will work on the .tmux.conf
file then you can do this for the rest of files.
Now, we will move .tmux.conf
to ~/.dotfiles
directory. You can use mv
to move file to .dotfiles
, for example
mv .tmux.conf .dotfiles/
With the command ll -al ~/.dotfiles | grep tmux
we search for any files or directories contains tmux name in ~/.dtofiles
but not found. After run mv .tmux.conf .dotfiles
and search again .tmux.conf
file moved to .dotfiles
directory successfully.
BUT
The Tmux configuration has broken. Of course, broken because there is no configuration file in the $HOME directory were in, it’s in the ~/.dotfiles
directory. How do we use this file and at the same time keep it tracked by git in ~/.dotfiles
?
We use ln
util to link file from ~/.dotfiles
directory to same file in the $HOME directory where can tmux use it and track all changes.
ln -s ~/.dotfiles/.tmux.conf ~/.tmux.conf
With the command above we created a copy of the .tmux.conf
file to the $HOME directory with a link as shown below
Everything is ready. By opening ~/dotfiles/.tmux.conf
and ~/.tmux.conf
side-by-side, every editing happens to any of two files, it happens to another.
we have a file that configures tmux and same file tracked by git into your .dotfiles
github repo.
Finally go to ~/.dotfiles
and push to Github.
Here is my repo with the code.
Summary
Let’s summarize some important things we have done.
- Create repo named
.dotfiles
- Clone it into your Home dir
git clone git@github.com:<YOUR_GITHUB_USERNAME>/.dotfiles.git ~/.dotfiles
- Move your files to
~/.dotfiles
usingmv
- Link your moved files with
ln
and it will automatically copied for you - Push your files to Github
Enjoy Reading This Article?
Here are some more articles you might like to read next: