dotfiles 管理环境配置

目标 & 背景

在我日常使用过程中,希望对现有的一些配置进行版本管理,比如 zshnvim 等工具,又或者 gitconfig 这些 dotfile,但是一直没找到比较合适的管理方式,直到看到了 dotfiles,此套流程非常简单,借助软连接 + git 版本管理来实现

完成配置后,你可以解决如下场景

  • 多电脑配置同步
  • 配置版本管理

dotfiles 仓库配置

首先在你喜欢的 git 仓库,创建一个名为 .dotfiles 的仓库,完成初始化后,就可以开始了

此处需要非常注意层级关系,我们需要遵守 stow 的自动化规则,来创建层级,具体命令行后面会进行介绍

我们以 zshnvim 这两种配置进行介绍,首先无论那种情况,我们都需要创建一个单独的文件夹进行管理

比如 zsh 中相关的配置是 .zshrc,那么就要把这个文件放在如下目录

.
├── .git
└── zsh
   └── .zshrc

nvim 也是同理,只是需要对应创建 .config/nvim 目录

├── nvim
│  └── .config
│     └── nvim # 真正的配置放在这个目录下

其他的配置基本上可以参考此套思路

stow

接着需要使用 stow 这个工具,完成配置文件软连接的自动生成,使用如下命令进行安装

brew install stow

这里我们主要使用如下几种方式:

# 假设当前在 dotfiles 的文件夹下
# 模拟同步 .dotfiles/bash 下的配置,软连接到 ~ 目录
stow -nvt ~ bash
# 很有可能你在开始时,在对应的额目录下,已经有了配置,如 .zshrc文件
# 此时使用 --adopt 可以完成这个场景的自动化
stow --adopt -nvt ~ bash

上述内容需要注意,一定要增加 -n 参数,防止配置被误删,在自己确认完毕后,再进行移除!此时就可以运行

# 不存在目标文件时
stow -vt ~ bash
# 存在目标文件时
stow --adopt -vt ~ bash

此时你会注意到,最后一个参数就是 .dotfile 中对应的初始文件夹名称 bash,按照模块划分后,我们可以自行选择同步哪一个模块,但是后面模块比较多时,我们可以使用通配符 * 来表示所有模块

stow -vt ~ *
# 或者
stow --adopt -vt ~ *

如果还有其他使用需求可以查阅 stow -h

参考

  1. Sync your .dotfiles with git and GNU #Stow like a pro!
  2. dotfiles