ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

get-shit-done 更新后本地改动被覆盖怎么办:gsd-local-patches 备份与 --reapply

get-shit-done 更新后本地改动被覆盖怎么办:gsd-local-patches 备份与 --reapply get-shit-done 更新后本地改动被覆盖怎么办gsd-local-patches 备份与 --reapply【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-done如果你直接修改过 get-shit-doneGSD安装的 workflow、command 或 agent 文件再运行更新时这些改动会被安装器的 clean install 覆盖——GSD 的更新机制是对 GSD 托管目录做 wipe-and-replace。从 v1.17 开始安装器会在覆盖前把检测到的本地修改文件备份到gsd-local-patches/目录之后通过/gsd-update --reapply命令可以把改动合并回新版本。本文说明如何确认备份存在、如何执行恢复、如何读懂恢复结果以及遇到冲突或验证失败时怎么处理。更新为什么会覆盖本地改动/gsd:update更新时执行的安装程序会清除并替换 GSD 托管的目录包括commands/gsd/、get-shit-done/、agents/gsd-*文件全局安装时位于~/.claude/等运行时目录本地安装时位于项目下的./.claude/等目录。以下文件不受影响会被保留commands/gsd/之外的自定义 command不以gsd-开头的自定义 agent自定义 hooks你的CLAUDE.md文件对于你直接修改过的 GSD 文件安装器通过 SHA-256 哈希比较检测出它们是被修改过的在覆盖前自动备份到配置目录下的gsd-local-patches/并写入清单文件backup-meta.json同时保存更新前的原始副本到gsd-pristine/目录用于恢复时的三方比较。更新流程结束后会自动检查该备份目录若发现备份会提示Local patches were backed up before the update. Run /gsd:update --reapply to merge your modifications into the new version.也就是说改动被覆盖这件事本身在 v1.17 及以上版本不会造成永久丢失前提是备份确实生成了——下面先确认这一点。第一步确认 gsd-local-patches 备份是否存在备份目录位于运行时配置目录下位置取决于安装作用域和运行时全局安装Claude Code~/.claude/gsd-local-patches/全局安装其他运行时~/.config/opencode/、~/.opencode/、~/.gemini/、~/.config/kilo/或~/.codex/下的gsd-local-patches/本地安装项目下./.claude/、./.opencode/、./.gemini/等对应目录下的gsd-local-patches/如果安装时用过环境变量指定配置目录如CLAUDE_CONFIG_DIR、OPENCODE_CONFIG_DIR、GEMINI_CONFIG_DIR、CODEX_HOME、KILO_CONFIG_DIR备份目录在环境变量指向的目录下而不是默认路径。以 Claude Code 全局安装为例可以这样检查# 检查更新是否产生了本地补丁备份 ls ~/.claude/gsd-local-patches/backup-meta.jsonbackup-meta.json里记录了被备份的文件列表以及每个文件的原始内容哈希pristine_hashes字段reapply时用它来定位三方比较的基线。两个需要区分的边界情况如果更新提示中没有备份、目录也不存在/gsd-update --reapply会输出 No local patches found. Nothing to reapply.——说明你没有改动过 GSD 托管文件无需恢复。更新流程对用户自己新增的、不在安装清单里的文件另有处理它会把它们备份到gsd-user-files-backup/而不是gsd-local-patches/。这类文件不在--reapply的恢复范围内需要更新后自行从备份目录恢复。第二步运行 /gsd-update --reapply 合并改动确认备份存在后在运行时里执行/gsd-update --reapply。该命令路由到 reapply-patches 工作流见 reapply-patches 工作流、update 命令定义整个过程由工作流自动完成你主要参与的是冲突裁决检测备份定位gsd-local-patches/读取backup-meta.json。确定三方比较基线按优先级使用 git 历史配置目录是 git 仓库时用pristine_hashes匹配对应提交、gsd-pristine/快照目录两者都没有则退化为增强的双向比较。三方比较用更新前原始版本、你的备份版本、新安装版本来区分哪些是你改的、哪些是上游版本迭代。显示补丁摘要列出来源版本、当前版本、修改文件数和采用的合并策略three-way (git)、three-way (pristine)或two-way (enhanced)每个文件初始状态为 Pending。逐文件合并合并规则是只有你改过的部分 → 保留你的版本只有上游改过的部分 → 接受上游版本双方都改过的部分 → 标记为 CONFLICT展示两个版本由你选择双方都没改 → 用新版本合并后验证对工作流输出的每个用户改动块做行存在性检查产出 Hunk Verification Table每行一个改动块verified列标明是否在新文件中确认存在并运行确定性验证脚本 verify-reapply-patches.cjs 做结构化校验。清理选项验证全部通过后询问你是否保留gsd-local-patches/作为参考或将其删除。输出最终报告## Patches Reapplied | # | File | Result | User Changes Preserved | |---|------|--------|----------------------| | 1 | {file_path} | Merged | Added step X, modified section Y | | 2 | {file_path} | Incorporated | Already in upstream v{version} | | 3 | {file_path} | Conflict resolved | User chose: keep custom section |上面的表格是文档给出的报告格式示例实际内容以你的文件为准。第三步判断恢复是否成功按文件核对最终报告成功条件是工作流列出的成功标准所有备份文件都被处理零遗漏、没有任何文件被归类为无自定义内容、每个文件都有状态说明并附保留内容摘要。单个文件的正常结果是Merged你的修改已干净合并、Conflict resolved你裁决过冲突或Incorporated上游已收录了你的修改仅当有原始基线确认时才会出现此状态。Hunk Verification Table 中verified列的含义yes表示该改动块的首行在合并后的新文件中找到了no表示改动块可能丢失需要处理见下节。验证失败或流程被暂停时怎么办reapply 有两道验证门确定性脚本校验强制门和 Hunk Verification Table 复查建议门任一未通过都不会进入清理步骤。文档给出了对应的处理路径脚本校验失败退出码非零报告会列出哪些用户新增行在新文件中缺失并给出两个解决选项——手工把缺失内容重新合并进已安装文件或直接从备份恢复该文件cp {patches_dir}/{file} {installed_path}{patches_dir}为你的gsd-local-patches/目录{installed_path}为文件在配置目录下的对应路径。处理完后重新运行/gsd:update --reapply再次验证。pristine 快照漂移Bug #3657即使脚本退出码为 0报告也可能标记部分文件因gsd-pristine/快照哈希与backup-meta.json记录不一致而被跳过此时流程会暂停。文档给出的三个解决选项(a) 把 pristine 快照重新锚定到backup-meta.json记录的版本(b) 从备份恢复受影响文件后手工重新合并(c) 若上游改动可以接受把backup-meta.json中对应文件的pristine_hashes更新为当前磁盘哈希再重新运行/gsd:update --reapply。Hunk Verification Table 缺失或存在verified: no行暂停并提示备份位置按同样方式手工重合并或从备份恢复后再重跑。限制与注意事项备份机制自 v1.17.0 引入见 CHANGELOG。更早版本安装的 GSD 没有gsd-local-patches/备份更新前请先自行保留对 GSD 文件的修改。备份覆盖的是被修改的 GSD 托管文件你新加在 GSD 目录下的自定义文件走的是gsd-user-files-backup/通道--reapply不负责恢复它们。即使某个文件的差异看起来全是路径替换、变量注入这类机械漂移工作流也不会静默跳过而是标记为 CONFLICT 让你确认——因为安装器的哈希比较已经证明该文件被改过没有自定义内容不是合法的结论。更新完成、恢复完成之后仍需要按更新流程的提示重启运行时才能加载新的命令和 agent。相关文档reapply-patches 工作流完整定义update 工作流备份检测与提示逻辑USER-GUIDE 中 GSD Update Overwrote My Local Changes 与 Recovery Quick Reference 一节manual-update.md非 npm 方式更新时同样适用该备份机制备份实现所在安装脚本【免费下载链接】get-shit-doneA light-weight and powerful meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.项目地址: https://gitcode.com/GitHub_Trending/getshi/get-shit-done创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表