用途:更新由 Copier 生成的项目,同时保留项目自身行为与配置,并审计上游变更范围与 Copier 实际输出,因为更新成功仍可能遗漏相关变更。
主要能力:先查找项目自带的更新配方(如 just update_from_upstream_template),检查 Justfile 与变量;保留排除规则与标志,不绕过配方改用裸 Copier 命令。记录基线:用 git status --short、git diff --stat、git diff --cached --stat 检查改动,Copier 需要干净的目标仓库,可用隔离 worktree 承载更新。定位 answers 文件(默认 .copier-answers.yml),读取 _src_path、_commit 与问题答案,用 _src_path 单独克隆上游并解析完整 SHA。
使用方式:优先运行本地配方;无合适配方或用户要求时才手动执行 copier update,并按项目配置选择 answers 文件、ref、排除项与任务标志,不强制 copier@latest、--vcs-ref=HEAD 或特定 Jinja 扩展。注意 --skip-tasks 跳过普通 _tasks 但不跳过 _migrations;--trust 会启用可执行代码的功能。更新后重新读取 answers 文件并解析实际应用的完整 SHA。
冲突处理:检查 git status、未合并条目、内联冲突标记与 .rej 文件,用 rg 搜索标记;按上游变更与项目意图逐项解决,保留项目标识、运行时行为、依赖与自定义配置。
审计与核对:在上游仓库用 git log --oneline "$old_sha..$new_sha" 与 git diff --find-renames --name-status 检查完整范围,映射模板路径到渲染目标路径,核对有效排除、保留或删除路径、跳过任务、重命名与条件文件、新文件与工具变更;锁文件应按项目命令重新生成,不整体复制模板锁文件。
验证与报告:从配方与配置发现依赖、格式化、lint、测试与构建命令,运行相应检查,复查 git diff --check、git diff --stat、git status --short,并报告模板来源、旧版本与应用版本、手动核对、重要遗漏、检查结果与剩余缺口。
限制:资料未提供具体模板、版本号、价格或平台信息;示例仅适用于匹配的模板与项目选项。