dotfiles

dotfiles - 你肯定知道我说的是什么,不然就不要往下看了。

下面是我的配置(Windows 上用cygwinconemu),灵感来自 StreakyCobra 在Hacker News上的回答,之前也用过其它复杂的工具和方法,但这个方法非常直接简单:

No extra tooling, no symlinks, files are tracked on a version control system, you can use different branches for different computers, you can replicate you configuration easily on new installation.

cygwin + conemu

初始化:

git init --bare $HOME/.cfg
alias cfg='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
cfg config --local status.showUntrackedFiles no
echo "alias cfg='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'" >> $HOME/.bashrc
echo ".cfg" >> .gitignore
cfg remote add origin [email protected]:fastzhong/cfg.git
  • 建立一个Git base repository - ~/.cfg,用这个 git 仓库跟踪所有的 dotfiles
  • 建立一个方便的命令行 alias - cfg
  • 和通常版本控制情况不同,默认下不显示没有跟踪的文件状态(跟踪文件必须先显式指明)
  • 把 alias 放入.bashrc
  • 让 git 忽略.cfg,因为.cfg 本身是仓库
  • 加入到 github

接下来就可以开始跟踪 dotfiles,例如:

cd .ssh
cfg status
cfg add config
cfg commit -m "add ssh config"
cfg push -u origin master

安装新电脑时,也很简单,先把 git 仓库克隆到本地:

git clone --bare https://github.com/fastzhong/cfg.git $HOME/.cfg

然后重复初始化的步骤,最后 checkout:

alias cfg='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'
cfg config --local status.showUntrackedFiles no
echo "alias cfg='/usr/bin/git --git-dir=$HOME/.cfg/ --work-tree=$HOME'" >> $HOME/.bashrc
echo ".cfg" >> .gitignore
cfg checkout
0%