dotfiles

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

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

Windows 上用cygwinconemu:

初始化:

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

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

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

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

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

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

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