Peng's Notes

用 Git 管理 dotfiles,换电脑十分钟恢复环境

· 约 2 分钟读完 · #工具 #效率

上个月公司给换了新电脑。以前每次换电脑都要花一两天,一点点想起来自己装过什么、改过哪些配置。这次下决心把 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 下载。比以前好太多了。