-
Notifications
You must be signed in to change notification settings - Fork 2
Install the dotfiles onto a new system
nce3xin edited this page Mar 27, 2019
·
1 revision
If you already store your configuration/dotfiles in a Git repository, on a new system you can migrate to this setup with the following steps:
- Prior to the installation make sure you have committed the alias to your .bashrc or .zshrc:
alias config='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
source your .bashrc or .zshrc
- And that your source repository ignores the folder where you'll clone it, so that you don't create weird recursion problems:
cd ~
echo ".dotfiles" >> .gitignore
- Now clone your dotfiles into a bare repository in a "dot" folder of your $HOME:
git clone --bare <git-repo-url> $HOME/.dotfiles
- Checkout the actual content from the bare repository to your $HOME:
config checkout
- The 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.
Aborting
This 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. Here is a rough shortcut to move all the offending files automatically to a backup folder:
mkdir -p .config-backup && \
config checkout 2>&1 | egrep "\s+\." | awk {'print $1'} | \
xargs -I{} mv {} .config-backup/{}
- Re-run the check out if you had problems:
config checkout
- Set the flag showUntrackedFiles to no on this specific (local) repository:
config config --local status.showUntrackedFiles no
- You're done, from now on you can now type config commands to add and update your dotfiles:
config status
config add .vimrc
config commit -m "Add vimrc"
config add .bashrc
config commit -m "Add bashrc"
config push