chezmoi 快速上手:用一条命令在任意机器上部署与管理你的 dotfiles
chezmoi 快速上手用一条命令在任意机器上部署与管理你的 dotfiles【免费下载链接】chezmoiManage your dotfiles across multiple diverse machines, securely.项目地址: https://gitcode.com/gh_mirrors/ch/chezmoi本指南以 quick-start.md 为主线完整讲解 chezmoi 的核心工作流从单机初始化、添加与编辑 dotfile、预览与应用变更、提交到 git 远端到多机同步与一行命令装机。读完本文你将掌握init、add、edit、diff、apply、merge、update、cd等核心命令的用法与-v/-n等关键参数并能对照仓库源码理解每条命令背后的实现原理。核心概念source state 与 target statechezmoi 的核心思想是把 dotfiles 的期望状态desired state作为唯一事实来源存放在源目录中然后计算并应用最小变更让实际文件逐步逼近期望状态。按 concepts.md 的精确定义chezmoi 会先为当前机器计算 target state目标状态再更新 destination directory目标目录其中destination directory目标目录chezmoi 管理的目录通常是你的主目录~。target目标项目标目录中的一个文件、目录或符号链接。destination state目标目录当前状态目标目录中所有 target 的当前状态。source state源状态声明的目标目录期望状态包含使用机器特定数据的模板其中只有普通文件和目录。source directory源目录存储 source state 的目录默认是~/.local/share/chezmoi。config file配置文件包含机器特定数据默认位于~/.config/chezmoi/chezmoi.toml。target state目标状态目标目录的期望状态由 source state、config file 与 destination state 三者计算得出它包含普通文件与目录也可能包含符号链接、要运行的脚本以及要删除的目标项。working tree工作树git 工作树通常与 source directory 相同但也可能是源目录的父目录。从源码看默认源目录的确定遵循 XDG Base Directory SpecificationdefaultSourceDir会先检查各 XDG data 目录下是否已存在源目录否则回退到$XDG_DATA_HOME/chezmoi即~/.local/share/chezmoi作为默认值见 config.go。chezmoi apply命令对应的实现会计算目标状态并只做最小变更来使 dotfiles 与期望状态一致applycmd.go。安装前提开始之前请先安装 chezmoi。官方 install.md.tmpl 提供了多种方式包管理器一键安装Linux 各发行版Alpine 用apk add chezmoi、Arch 用pacman -S chezmoi、Debian 用apt-get install chezmoi、Fedora 用dnf install chezmoi等、macOSbrew install chezmoi、Windowswinget install twpayne.chezmoi、choco install chezmoi、scoop install chezmoi、FreeBSDpkg install chezmoi等。二进制一键安装sh -c $(curl -fsLS https://get.chezmoi.io)默认安装到./bin也可用-b指定目录或用https://get.chezmoi.io/lb安装到./.local/bin。从源码构建需要 Go 1.25 或更高版本克隆仓库后执行make install-from-git-working-copy。安装完成后即可进入下面的工作流。在当前机器上开始使用 chezmoi1. 初始化chezmoi initchezmoi init这会在~/.local/share/chezmoi创建一个新的 git 本地仓库chezmoi 将在这里存放 source state。默认情况下chezmoi 只修改工作副本working copy中的文件不会动主目录里的文件。从源码看init命令对应 initcmd.go 中的newInitCmd。当源目录内不存在.git目录时它会执行 git initgit init --quiet或使用内置 git 实现的git.PlainInit见 initcmd.go。该命令还支持很多有用的 flag例如--branch、--revision、--tag三者互斥指定初始检出分支/修订/标签、--depth浅克隆、--recurse-submodules递归检出子模块、--config-path/-C指定生成配置文件的写入路径等。2. 添加第一个文件chezmoi addchezmoi add ~/.bashrc这条命令会把~/.bashrc复制到~/.local/share/chezmoi/dot_bashrc。注意文件名前缀dot_chezmoi 用它表示这是主目录中以.开头的文件从而既能在 git 仓库中正常跟踪隐藏文件又能在应用时恢复成隐藏文件名。add命令的实现见 addcmd.go它还提供了许多常用 flag-r, --recursive递归添加子目录-T, --template作为模板添加文件名加.tmpl后缀-a, --autotemplate添加时自动生成模板-e, --encrypt加密文件结合 age/GPG 等加密后端--exact精确添加目录用exact_前缀-x, --exclude/-i, --include按条目类型过滤-p, --prompt添加每个条目前逐个询问--secrets添加未加密文件时扫描其中的密钥secret泄露。另外add会保护一批关键路径源目录、工作树、配置文件、持久状态文件、chezmoi 可执行文件本身等防止误把自己添加进仓库addcmd.go。3. 编辑源状态chezmoi editchezmoi edit ~/.bashrc这会在你的$EDITOR中打开~/.local/share/chezmoi/dot_bashrc。做出修改并保存即可。!!! hint不一定要用 chezmoi edit 来编辑 dotfiles。官方 FAQ 给出了五种常见编辑方式[usage.md](https://link.gitcode.com/i/6380701e1724859e6bfc46024b0a8d04) 1. chezmoi edit $FILE打开该文件对应的源文件若文件是模板会打开模板若已加密会透明解密、编辑后再自动重新加密。进阶用法是 chezmoi edit --apply $FILE退出编辑器时自动应用和 chezmoi edit --watch $FILE每次保存时自动应用。 2. chezmoi cd 后直接在源目录中编辑再用 chezmoi diff 查看变更、chezmoi apply 应用。 3. 如果编辑器支持打开目录直接运行不带参数的 chezmoi edit 打开源目录。 4. 直接编辑主目录中的文件然后用 chezmoi add $FILE 或 chezmoi re-add 重新收录注意 re-add 不适用于模板。 5. 直接编辑主目录中的文件然后用 chezmoi merge $FILE 将你的改动与源状态合并。从源码看edit命令editcmd.go对加密文件会先把明文解密到临时目录、编辑完成后再重新加密写回源文件对普通文件则可以直接编辑源目录中的文件--hardlink模式下会在临时目录建立硬链接让编辑器看到目标文件名、同时实时更新源文件。4. 预览将发生的变更chezmoi diffchezmoi diffdiff计算目标状态与目标目录当前状态之间的差异并以 diff 形式打印它不会修改任何文件。从实现上看runDiffCmd复用了 apply 的计算管线但通过 annotation 标记为 dry run 且不写持久状态diffcmd.go即只算不改。5. 应用变更chezmoi -v applychezmoi -v applyapply会让目标目录与目标状态保持一致。所有 chezmoi 命令都支持两个通用 flag-vverbose打印命令将要对文件系统做出的确切变更-ndry run不真正做任何变更。组合使用-n -v可以精确查看将会发生什么是执行危险操作前最常用的安全手段。从源码看verbose是一个持久化 flagconfig.go对应c.Verbose配置项config.go。6. 提交到 git 仓库在源目录中打开一个 shell然后提交你的变更chezmoi cd git add . git commit -m Initial commitchezmoi cd会在源目录中启动一个子 shell让你直接执行 git 命令完成后输入exit回到原来的位置。从源码看cd命令cdcmd.go默认使用当前用户 shell 在~/.local/share/chezmoi工作树目录中启动还支持带参数进入某个 target 对应的源路径。之后在 GitHub 上新建一个名为dotfiles的仓库并推送git remote add origin gitgithub.com:$GITHUB_USERNAME/dotfiles.git git branch -M main git push -u origin main!!! hintchezmoi 可以配置为自动 [add、commit、push][autogit] 变更到你的仓库。启用方式是在配置文件 ~/.config/chezmoi/chezmoi.toml 中加入 toml [git] autoCommit true autoPush true 其中 autoPush 隐含 autoCommit只设 autoCommit 则只提交不推送。还可通过 git.commitMessageTemplate 自定义提交信息模板[daily-operations.md](https://link.gitcode.com/i/699b6b40f28cb8fa872ed0cf34f73809)。需要注意如果 dotfiles 仓库是公开的autoPush 会把误提交的明文密钥一并推送出去务必谨慎。chezmoi 同样可以与 GitLab、BitBucket、Source Hut 等任何 git 托管服务配合使用只需提供对应仓库 URL。最后退出源目录中的 shell 回到原位exit以上命令可以用下面的时序图来概括在多台机器之间使用 chezmoi在第二台机器上用你的 dotfiles 仓库初始化 chezmoichezmoi init https://github.com/$GITHUB_USERNAME/dotfiles.git!!! hint私有 GitHub 仓库需要其他认证方式 sh chezmoi init gitgithub.com:$GITHUB_USERNAME/dotfiles.git 这条命令会检出仓库及其所有子模块并可选地为你生成一个 chezmoi 配置文件。从源码看当init带仓库参数时会执行 git clone可用--recurse-submodules递归检出子模块、--depth浅克隆、--branch/--revision/--tag指定初始检出版本见 initcmd.go。此外init还支持--guess-repo-url/-g参数当参数只是用户名如$GITHUB_USERNAME时guessRepoURL会按内置规则补全为https://github.com/$1/dotfiles.git配合--ssh则补全为gitgithub.com:$1/dotfiles.git也支持user/repo、host/user/repo、sr.ht/~user等形式的自动推断initcmd.go、initcmd.go。接下来检查 chezmoi 会对主目录做哪些变更chezmoi diff如果对将要发生的变更满意就应用它chezmoi apply -v如果对某个文件的变更不满意有两种处理方式方式一直接用chezmoi edit编辑源状态chezmoi edit $FILE方式二调用合并工具默认是vimdiff做三方合并——合并对象分别是文件当前内容、工作副本中的文件内容、计算出的目标文件内容chezmoi merge $FILE从源码看merge命令mergecmd.go会构造目标目录当前内容、源状态内容、计算出的目标状态内容三个版本把目标状态写入临时目录后调用合并命令默认vimdiff进行三方合并如果源状态文件是加密的会先透明解密再参与合并合并完成后自动重新加密写回mergecmd.go。在任意一台机器上都可以用一条命令拉取并应用仓库中的最新变更chezmoi update -v从源码看update命令updatecmd.go默认执行git pull --autostash --rebase可加--recurse-submodules递归更新子模块-a/--apply拉取后立即应用-i/--init从模板重新生成配置文件。多机工作流对应的时序图如下一条命令完成新机器装机你可以用一条命令在新机器上安装并应用你的 dotfileschezmoi init --apply https://github.com/$GITHUB_USERNAME/dotfiles.git如果你使用 GitHub 且 dotfiles 仓库就叫dotfiles这条命令可以进一步简化为chezmoi init --apply $GITHUB_USERNAME!!! hint私有 GitHub 仓库需要其他认证方式 sh chezmoi init --apply gitgithub.com:$GITHUB_USERNAME/dotfiles.git 这里--apply对应短 flag-a让init在检出仓库后立即把目标状态应用到目标目录等价于克隆 生成配置 应用的完整装机流程initcmd.go。结合前面提到的用户名推断规则chezmoi init --apply $GITHUB_USERNAME会自动补全成 GitHub 上的dotfiles仓库地址。如果想实现真正零残留的一次性部署还可以使用--one-shot模式它以浅克隆方式应用 dotfiles 后自动清除配置、源目录乃至 chezmoi 二进制本身initcmd.go。这条命令的时序图非常简洁下一步查看完整的命令列表chezmoi helpchezmoi 还有更多强大的功能。推荐的进阶路线阅读 用户指南 系统学习各项功能添加更多 dotfiles 到你的仓库使用模板管理随机器变化的文件并从密码管理器中获取密钥参考社区文章了解其他用户的使用心得浏览公开的 dotfiles 仓库寻找灵感。至此你已经掌握了 chezmoi 从单机初始化到多机同步、再到一条命令装机的完整工作流。接下来要做的就是把你的第一份 dotfiles 提交到远端仓库并让它成为你所有机器的唯一事实来源。【免费下载链接】chezmoiManage your dotfiles across multiple diverse machines, securely.项目地址: https://gitcode.com/gh_mirrors/ch/chezmoi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

grok-build 目标模式执行纪律:goals 任务完成规范(goal_task_discipline)深度解析

grok-build 目标模式执行纪律:goals 任务完成规范(goal_task_discipline)深度解析

grok-build 目标模式执行纪律:goals 任务完成规范(goal_task_discipline)深度解析 【免费下载链接】grok-build SpaceXAIs coding agent harness and TUI. Fullscreen, mouse interactive, extensible. 项目地址: https://gitcode.com/gh_m…

2026/9/22 0:06:46 阅读更多 →
douyin-downloader 完整指南:抖音批量下载、去水印、主页抓取与直播录制,四关跑通

douyin-downloader 完整指南:抖音批量下载、去水印、主页抓取与直播录制,四关跑通

douyin-downloader 完整指南:抖音批量下载、去水印、主页抓取与直播录制,四关跑通 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite dedu…

2026/9/22 0:05:35 阅读更多 →
GPT-5.5 的 100 万 Token 上下文,走 TaoToken 通道后怎么验证调用成功?

GPT-5.5 的 100 万 Token 上下文,走 TaoToken 通道后怎么验证调用成功?

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/20 21:25:37 阅读更多 →

最新新闻

MATLAB晶粒生长模拟:蒙特卡洛Potts模型实现与应用

MATLAB晶粒生长模拟:蒙特卡洛Potts模型实现与应用

1. 项目背景与核心价值在材料科学研究领域,晶粒组织的演化过程直接影响着金属、陶瓷等材料的力学性能和物理特性。传统实验方法需要耗费大量时间和资源进行金相制备、热处理和显微观察,而计算机模拟技术为研究者提供了一种高效、低成本的替代方案。这个M…

2026/9/22 0:07:44 阅读更多 →
5年大厂面试官揭秘:奇拿面试题新手避坑指南

5年大厂面试官揭秘:奇拿面试题新手避坑指南

5年大厂面试官揭秘:奇拿面试题新手避坑指南 官方文档翻了三遍还是像看天书?别慌,这就是典型的【奇拿】场景。很多【新手避坑】指南只讲理论,却忽略了大厂面试官真正想听的那句人话。今天我就把底裤都扒了,带你用最短时间抓住【奇拿】考点的核心,让你下…

2026/9/22 0:07:44 阅读更多 →
qq恢复网站入门到精通:3步避坑,选型不踩雷

qq恢复网站入门到精通:3步避坑,选型不踩雷

qq恢复网站入门到精通:3步避坑,选型不踩雷 官方文档翻了三遍还是晕?别急,谁第一次看QQ找回账号的后台逻辑不是这样。官方流程太冗长,关键节点藏得深,导致你卡在“验证方式”和“数据同步”上,根本抓不住重点。今天咱们不念经,直接拆解从0到1搭…

2026/9/22 0:07:44 阅读更多 →
Excel VBA中Range.Value数组特性解析与应用

Excel VBA中Range.Value数组特性解析与应用

1. 深入理解VBA中Range.Value返回的数组特性在Excel VBA开发中,Range对象的Value属性是最基础也是最常用的功能之一。但许多开发者(包括我在早期)都曾在这个看似简单的操作上栽过跟头。今天我们就来彻底剖析这个日常操作背后的机制。关键发现…

2026/9/22 0:07:44 阅读更多 →
3个坑解决版本升级API全变:手写实现如何打广告核心逻辑

3个坑解决版本升级API全变:手写实现如何打广告核心逻辑

3个坑解决版本升级API全变:手写实现如何打广告核心逻辑 版本升级后 API 全变了,你写的代码直接报 AttributeError ,是不是瞬间血压飙升?别慌,这种时候硬啃新文档不如 手写实现 底层逻辑来得快。…

2026/9/22 0:07:44 阅读更多 →
ISO9001体系高频面试题:3年实战避坑指南与代码级解析

ISO9001体系高频面试题:3年实战避坑指南与代码级解析

ISO9001体系高频面试题:3年实战避坑指南与代码级解析 昨天刚带一个新人做审计,他手里拿着从网上复制的《质量手册》草稿,问我在“4.1…

2026/9/22 0:06:44 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →