Profile (dotfiles) management using git
Following the suggestion in this blog post and following the instructions in profile management my dot files are now under source code control with git.
The given instructions were not complete: i.e. following this command:
mkdir .config.gityou need to initialize/create the git repository:
cd .config.git
shopt -s dotglob
git init
mv .git/* .
rmdir .gitCopied Page:
Profile Management with Git and GitHub
The following describes a simple way to manage you profile configuration files using GitHub.
Features
- Centralized configuration management
- Files live in their native locations (no symbolic linking)
- Home directory is not a Git repository
- All the power of git with a simple alias
Setup Repository
- Log into GitHub and create a repository named config
- Add your public keys to GitHub (if you haven't done so already)
- Open a terminal and switch to your home directory
cd ~
# Create a configuration directory
mkdir .config.git
# Add the following alias to your current session and your .bash_profile
alias config='git --git-dir=$HOME/.config.git/ --work-tree=$HOME'
echo "alias config='git --git-dir=$HOME/.config.git/ --work-tree=$HOME'" >> .bash_profile
# Add your `.bash_profile` to the configuration repository
config add .bash_profile
# Commit the changes
config commit -m 'Initial commit'
# Change the origin to GitHub
config remote add origin git@github.com:GITHUB_USERNAME/config.git
# Push the changes
config push origin masterIf you get an error when running `config pull` to the effect of `You asked me to pull without…` run the follow:
echo -e '[branch "master"]\n remote = origin\n merge = refs/heads/master' >> ~/.config.git/configSetup Configuration Management on a Different System
Add your public keys to GitHub (if you haven't done so already)
Switch to your home directory
cd ~Backup your local configuration files, example:
mv .bash_profile .bash_profile.bkClone your configuration repository
git clone git@github.com:GITHUB_USERNAME/config.git config.gitMove the git metadata to ~/.config.git
mv config.git/.git .config.gitEnable dotglob
shopt -s dotglobMove your configuration files to your home directory
mv -i config.git/* .Delete the config.git directory
rmdir config.gitLogout and log back in
Basic Usage
config pull # get latest configuration changes
config add FILENAME # add a configuration file
config commit -a # save all configuration changes
config push # push configuration changes to GitHub and any other 'config GIT_OPTION'You can see my configuration repository at http://github.com/silas/config (broken).
Source: Manage your $HOME with git (broken) by Robert Escriva
