用途
chezmoi-workflows 是一个围绕 chezmoi 的技能,用于 dotfiles(配置文件)的备份与同步。当需要把 dotfiles 备份到 Git 仓库、在多台机器之间同步配置文件、追踪 shell 配置或编辑器设置的改动、使用 chezmoi 管理模板化配置,以及排查源目录与目标目录之间的配置漂移时,可以使用该技能。
架构
该技能基于 chezmoi 的三层结构:
- Source:由
chezmoi source-path指定的目录,存放 dotfile 模板的 Git 仓库。 - Target:
~/,即部署文件所在的主目录。 - Remote:GitHub(建议使用私有仓库),用于跨机器同步与备份。
- Config:
~/.config/chezmoi/chezmoi.toml,存放用户偏好与设置。
主要能力与使用方式
技能按操作场景组织命令,主要包括:
- 状态检查:使用
chezmoi source-path、chezmoi git -- remote -v、chezmoi status、chezmoi managed | wc -l查看源目录、远端、漂移情况和被追踪文件数量。 - 追踪文件改动:编辑配置后,用
chezmoi status确认、chezmoi diff审查、chezmoi add加入源并(若已配置)自动提交,再chezmoi git -- push推送。 - 追踪新文件:用
chezmoi add添加,用chezmoi managed验证,再推送。 - 从远端同步:
chezmoi update一条命令完成拉取与应用,再用chezmoi verify和chezmoi status校验。 - 推送全部改动:
chezmoi status审查、chezmoi re-add重新添加全部受管文件、chezmoi git -- push推送。 - 首次设置:用
brew install chezmoi安装;可chezmoi init创建空源并添加首批文件后用gh repo create建私有仓库;也可chezmoi init git@...克隆已有仓库后chezmoi apply。 - 配置源目录:移动源目录并在
chezmoi.toml中设置sourceDir。 - 切换远端:用
chezmoi git -- remote set-url更换仓库并推送。 - 解决合并冲突:用
chezmoi git -- status/diff定位冲突,手工编辑源目录中的文件后暂存、提交、chezmoi apply并推送。 - 校验:
chezmoi verify(退出码 0 表示全部匹配)、chezmoi diff(为空表示无漂移)、chezmoi managed、chezmoi git -- log。 - 取消追踪:
chezmoi forget --force <path>移除追踪但保留主目录中的文件,适用于机器专属配置、含密钥的文件或误加文件。 - 模板管理:用
chezmoi add --template创建.tmpl,用chezmoi edit编辑,用chezmoi diff预览,用chezmoi apply渲染应用。支持按操作系统(.chezmoi.os)、架构(.chezmoi.arch)、chezmoi.toml的[data]自定义变量,以及 1Password(onepasswordRead)生成配置。可用chezmoi execute-template和chezmoi cat验证渲染结果。 - 安全更新:先
chezmoi git -- pull只拉取,再chezmoi diff审查,再chezmoi apply --dry-run --verbose,确认后才chezmoi apply。适用于从另一台机器拉取改动或长时间未同步的情形。 - 诊断:
chezmoi doctor检查 config-file、source-dir、git-command、edit-command、1password、age/gpg 等项,可用chezmoi doctor | grep -v "^ok"只看告警与错误。
适用场景
- 跨机器同步 shell、编辑器等配置。
- 备份 dotfiles 到私有 Git 仓库。
- 通过模板为不同系统、架构或账号生成差异化配置。
- 排查并解决源目录与主目录之间的漂移或合并冲突。
- 管理含密钥或机器专属内容的配置文件(先取消追踪或改用模板)。
限制
使用前需安装 chezmoi 与 Git;模板中使用 1Password 需安装 op CLI,加密文件需 age/gpg。技能未提供具体的安装版本要求、各平台差异细节、收费或价格信息。若 chezmoi 未安装会提示 not found,未初始化时源路径为空,远端未设置需手动添加 origin。