用 Git 管理 dotfiles,换电脑十分钟恢复环境
上个月公司给换了新电脑。以前每次换电脑都要花一两天,一点点想起来自己装过什么、改过哪些配置。这次下决心把 dotfiles 整理成一个 Git 仓库。
不用软链接的做法
常见做法是把配置文件放进一个目录,再用软链接链回家目录。我用的是另一种方式:把家目录当作工作区,Git 仓库放在一个单独的目录里。
git init --bare $HOME/.dotfiles
alias dot='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
dot config status.showUntrackedFiles no
最后一行很重要,不然 dot status 会把家目录里所有文件都列出来。之后就像普通 Git 一样使用:
dot add ~/.zshrc ~/.gitconfig ~/.config/nvim
dot commit -m "add zsh, git and nvim config"
dot push
在新电脑上恢复
git clone --bare <仓库地址> $HOME/.dotfiles
alias dot='git --git-dir=$HOME/.dotfiles --work-tree=$HOME'
dot checkout
如果家目录里已经有同名文件,checkout 会报错,先把这些文件备份或者删掉再执行就行。
软件列表
在 Mac 上,我用 Homebrew 的 Brewfile 记录装过的软件:
brew bundle dump --file=~/.Brewfile --force # 导出
brew bundle --file=~/.Brewfile # 在新电脑上安装
Brewfile 也放进 dotfiles 仓库里,每隔一段时间重新导出一次。
不要放进仓库的东西
- SSH 私钥、云服务的访问密钥、各种 token。
- 带公司内部地址的配置,单独放一个不进仓库的
~/.zshrc.local,在.zshrc末尾source它。 - 编辑器插件下载下来的缓存目录。
这次换电脑,从开机到能正常写代码,大约花了 40 分钟,大部分时间是在等 Homebrew 下载。比以前好太多了。