Git Safety Net (Lưới an toàn cho Git)
Kỹ năng pháp y Git giúp phục hồi commit/branch/stash đã mất và chứng minh bằng nội dung rằng việc dọn dẹp không làm mất việc.
Lập trìnhTrung cấp★ 1,323⑂ 212Điểm AI 9/10Cập nhật lần cuối: 8 thg 8, 2026
Nó làm được gì
- Phục hồi (Mode A): theo thang
git reflog→git fsck --danglingđể tìm lại commit, branch, stash đã "biến mất" (thường còn ~90 ngày trong object store) và đưa về một branch mớirescue/...chứ khôngresetlên việc đang chạy. - Kiểm toán & bảo toàn (Mode B): quét toàn máy để tìm mọi bản checkout của cùng repo — kể cả các bản
git cloneđộc lập màgit worktree list,git branch -a,git fsckđều không thấy — rồi liệt kê commit chưa push, file bẩn, stash và dangling commit trong từng bản. Sau đó ghim commit mồ côi vàorefs/dangling-backup/, xuất patch, bundle và copy tay các file untracked (bundle/archive không với tới được chúng). - Xác minh đã merge (Mode C): không tin vào số commit (squash-merge tạo ra hàng trăm commit "ảo"), mà dùng thử merge bằng
git merge-treeđể kết luận MERGED / UNMERGED theo nội dung. - Phòng ngừa (Mode D): commit-rồi-switch thay vì stash hay clone thứ hai; dùng
git branch -fthay choreset --hardtrong cây làm việc dùng chung. - Dọn dẹp an toàn (Mode E): chỉ xóa stash/worktree/branch/clone sau khi chứng minh chúng đã bị thay thế và backup đã tồn tại.
Phù hợp với ai
- Lập trình viên vừa rebase/force-push và lo đã mất việc
- Người có hàng chục branch, stash, worktree tồn đọng và không biết xóa gì
- Nhóm hoặc nhiều AI agent làm việc song song trên cùng một repo
- Tech lead cần bằng chứng "mọi thứ đã lên main" trước khi phát hành
Ví dụ sử dụng
- "Commit hôm qua của tôi mất rồi" → tìm SHA trong 40 dòng đầu của reflog, xác nhận bằng
git show, rồi phục hồi sangrescue/lost-feature. - "Xóa thư mục clone này được chưa?" → chạy
git_find_all_checkouts.sh, phát hiện một clone cạnh đó còn 440 dòng file untracked, backup xong mới cho xóa. - "Dọn 30 branch cũ, chỉ giữ main" → chạy
git_verify_branch_merged.shcho từng branch, xóa những branch MERGED (content contained) và giữ lại phần chưa chứng minh được.
· · · Hướng dẫn cài đặt · · ·
Cài vào ứng dụng Claude (không cần terminal)
- Tải tệp ZIP bằng nút bên dưới.
- Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
- Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
Cài vào Claude Code
Để Claude làm — dán câu dưới đây vào Claude Code
Hãy cài skill mình tìm thấy trên Claude Skill Mart. Copy thư mục git-safety-net từ repo GitHub daymade/claude-code-skills vào ~/.claude/skills/git-safety-net/ của mình. Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.
Cài bằng lệnh thủ công
git clone https://github.com/daymade/claude-code-skills.git && mkdir -p ~/.claude/skills && cp -r claude-code-skills/git-safety-net ~/.claude/skills/⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.
- Mở terminal và chuyển tới thư mục thuận tiện, ví dụ:
cd ~ - Clone repo:
git clone https://github.com/daymade/claude-code-skills.git - Tạo thư mục skill:
mkdir -p ~/.claude/skills - Copy skill vào:
cp -r claude-code-skills/git-safety-net ~/.claude/skills/ - Cấp quyền chạy cho script:
chmod +x ~/.claude/skills/git-safety-net/scripts/*.sh - Mở Claude Code ngay tại thư mục gốc của repo Git cần kiểm tra và yêu cầu: "Kiểm tra xem tôi có mất commit nào không bằng git-safety-net".
- Lần đầu hãy bắt đầu bằng Mode B (kiểm toán) — các lệnh audit và bảo toàn đều không phá hủy dữ liệu.
- Khi tới bước xóa (Mode E), tự kiểm tra file backup đã tồn tại rồi mới xác nhận, vì
rm -rfkhông thể hoàn tác.
Xem mã nguồn trên GitHub ↗Giấy phép: MIT