dotfiles

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

下面是我的配置,灵感来自 StreakyCobra 在Hacker News上的回答,之前也用过其它复杂的 scripts,但这个方法非常直接,简单且有效:

Windows 上用cygwinconemu:
cygwin + conemu

初始化:

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

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

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

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

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

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

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