git-safety 是一个面向 Git 操作的安全防护技能,核心目的是在执行可能造成提交丢失、历史改写或影响共享分支的命令前进行拦截、风险提示与确认。
用途:在危险 Git 操作发生前评估风险,避免不可逆的工作丢失。
主要能力:按危险等级对操作分类。⛔ CRITICAL 级(如向共享分支 push --force、在有未推送工作时 reset --hard)需完整校验并显式确认;🔴 HIGH 级(如共享分支 rebase、clean -fd、checkout .)需检查 stash 并确认;🟠 MEDIUM 级(如 reset --soft/mixed、stash drop、branch -D)需校验分支状态并确认;🟢 LOW 级(如 commit、push、pull、fetch、branch)按常规执行。技能会展示将被覆盖或丢失的提交、未提交改动、未跟踪文件等信息,并给出更安全的替代方案,例如用 --force-with-lease 代替 --force、先 stash 或建备份分支、用 git clean -fdn 预览、用 -d 代替 -D、用 merge 代替 rebase。
使用方式:在破坏性操作前先运行 git status、git log --oneline -5、git stash list 检查状态,必要时创建备份分支或 stash,并记录 reflog 位置。资料还提供了恢复命令(reflog、fsck --lost-found)、pre-push 钩子示例、安全别名(如 pushf = push --force-with-lease)以及操作前检查清单。
适用场景:涉及共享分支、历史改写、丢弃未提交改动或删除分支/暂存的操作。
限制:未跟踪文件被 clean 删除后通常无法恢复;reflog 恢复受 90 天与 git gc 影响;该技能依赖人工确认,不能替代团队沟通与备份。