safe-delete-sole-copy-check
프로젝트 폴더를 지우기 전에 유일본인지 확인합니다. 살아 있는 원격, 푸시 안 한 커밋과 태그, 무시된 파일을 봅니다.
어떤 문제를 푸나The problem
디스크 공간을 비우는 일은 데이터를 잃기 쉬운 순간입니다. sole_copy_check.sh는 '이 폴더의 모든 바이트가 다른 곳에도 있는가'에 답하고, 확인하지 못한 것은 안전이 아니라 판단 불가로 처리합니다. verify_copy.sh는 원본을 지우기 전에 복사본이 같은지 해시로 증명합니다.
원격에 직접 접속해 로컬에 남은 원격 추적 정보가 낡지 않았는지도 확인합니다.
이런 분께 맞습니다Who it is for
오래된 프로젝트 폴더를 정리하거나 외장 디스크로 옮기기 전에 지워도 되는지 확인하고 싶은 개발자.
무엇을 하나What it does
- 종료 코드 0은 안전, 1은 유일본, 2는 판단 불가이며 2를 안전으로 취급하면 안 됩니다.
- 유일본으로 보는 경우: 저장소 루트가 아님, origin 없음, 어느 원격에도 없는 커밋(브랜치·태그·스태시), 분리된 HEAD, 원격에 없는 태그, 추적 안 되는 파일, .env 같은 무시된 파일입니다. 무시된 파일은 재생성 가능하다고 확인했을 때만 --allow-ignored로 넘깁니다.
- 판단 불가인 경우: origin 접속 불가, 로컬 원격 정보가 낡음, reflog에만 남은 작업, 서브모듈·추가 작업트리·Git LFS가 있음입니다.
- verify_copy.sh는 모든 파일의 sha256, 심볼릭 링크 대상, 빈 디렉터리를 비교합니다. 읽을 수 없는 파일이 있으면 종료 코드 2입니다.
직접 돌려 본 출력Real output
저장소의 examples 폴더를 실행한 결과입니다.
$ bash examples/demo.sh
# Before deleting a folder: is anything here the only copy?
$ scripts/sole_copy_check.sh .demo-tmp/proj
safe: origin reachable and in sync, no unpushed commit/tag/stash, no untracked or ignored files
[exit 0]
# An untracked file exists nowhere else:
$ scripts/sole_copy_check.sh .demo-tmp/proj
SOLE COPY: uncommitted or untracked files (untracked files in a remote-backed repo are the easiest to miss)
[exit 1]
# A folder that is not a git repo at all:
$ scripts/sole_copy_check.sh .demo-tmp/plain
SOLE COPY: not a git repository
[exit 1]
알아둘 한계Limits
- git 밖에 있는 파일과 LFS 저장소의 내용은 볼 수 없습니다.
- 권한, 타임스탬프, 확장 속성은 비교하지 않습니다.
- origin에 접속하므로 오프라인에서는 2로 답합니다.
받아서 쓰기Get it
# 저장소를 받습니다
git clone https://github.com/Kein-chronicle/safe-delete-sole-copy-check.git
# Claude Code 스킬로 쓰려면 이 폴더 이름으로 받습니다
git clone https://github.com/Kein-chronicle/safe-delete-sole-copy-check.git ~/.claude/skills/safe-archive-rules
정보Info
- 분류Category
- 맥·모바일 개발Mac & mobile
- 형태Type
- 명령줄 도구Command-line tool
- 라이선스License
- MIT
- 필요한 것Requires
- Python 3.10 이상, bash
- 저장소Repository
- safe-delete-sole-copy-check
- 토픽Topics
gitbackupcleanupsafetyshelldevopsdisk-spaceclaude-skills
2026-10-18 기준: 저장소의 테스트를 로컬에서 실행해 통과했고, 예제 출력은 저장소의 examples 폴더를 실제로 실행한 결과입니다.