Git 커밋 30초 보험 - placeholder/누락 함정 피하기¶
한 줄 요약: git commit 직전에 git status --short로 어떤 파일이 트럭에 실렸는지(stage) 30초만 확인하면, "로컬에 채워둔 값이 placeholder인 채로 푸시"되는 12시간짜리 함정을 막는다.
배경 - 2026-05-10 사고¶
뉴스레터 폼에 D1 데이터베이스 연결하려고 wrangler.toml에 ID를 적어둠.
근데 Cloudflare 빌드 로그에는:
뭔 일? git diff HEAD -- wrangler.toml 쳐보니:
로컬에는 채웠지만 git에는 placeholder 그대로 올라가 있었음. 12시간 동안 사이트가 빌드 실패 상태로 멈춰 있었는데 모르고 있었음.
왜 이런 일이 생기나 - "이사 박스" 비유¶
git은 "이사 박스 포장 + 트럭 적재" 두 단계로 동작해.
| 단계 | 명령 | 비유 |
|---|---|---|
| 1. 파일 수정 | (그냥 편집) | 짐을 박스에 넣음 |
| 2. stage | git add 파일 |
박스에 "이사할 짐" 라벨 붙이기 |
| 3. commit | git commit |
박스를 트럭에 실어서 운송장 발급 |
| 4. push | git push |
트럭을 GitHub로 출발 |
라벨(stage) 안 붙은 박스는 트럭이 안 가져가. 디스크에는 짐(수정 내용)이 있어도 GitHub에는 안 올라간 상태.
특히 위험한 패턴:
- placeholder 채우기: README/설정 파일의 <여기 입력> 같은 곳을 채웠는데 stage 안 함
- 민감정보 제외: .gitignore에 빼놓은 파일을 의도치 않게 다른 명령으로 stage
- 반대로 의도치 않게 같이 stage: git add .을 무심코 쳐서 작업 중인 다른 파일까지 commit (오늘 admin 4파일이 같이 들어간 것)
30초 보험 명령 3종¶
1. 어떤 파일이 stage됐는지¶
출력:M wrangler.toml ← M이 왼쪽 = stage됨, commit하면 들어감
M src/index.astro ← M이 오른쪽 = stage 안 됨, commit해도 안 들어감
?? new-file.txt ← ?? = git이 모르는 untracked 파일
왼쪽 컬럼(stage됨)이 내가 의도한 것과 일치하는지만 보면 됨.
2. stage된 변경 내용 미리보기¶
"내가 commit하면 정확히 어떤 줄이 바뀔지" 미리 봄. placeholder 잔존 같은 것 잡힘.3. 의심되는 파일 한 개만 비교¶
git이 본 마지막 버전 vs 디스크 현재 상태 비교. 수정했는데 안 들어가는 것 같다 싶을 때 이거 한 번 치면 답 나옴.비유로 정리¶
git status --short= 트럭 적재 명단 확인 (뭐 실렸나)git diff --cached= 운송장 미리보기 (뭐가 어떻게 바뀌나)git diff HEAD -- 파일= 박스 안의 짐 vs 적재된 짐 대조
실전 체크리스트 (commit 직전)¶
# 1단계: 적재 명단 본다
git status --short
# 2단계: 의심나는 파일 있으면 내용 본다
git diff --cached
# 3단계: 그제서야 commit
git commit -m "메시지"
# 4단계: 푸시 후 진짜 배포됐는지 확인 (Cloudflare/Vercel 배포면)
npx wrangler pages deployment list --project-name PROJECT
# Status가 "Failure"면 빌드 실패 - 빌드 로그 확인
메모리 연계¶
- CF Pages 무음 빌드 실패 →
~/.claude/projects/D--Sites/memory/feedback_cf_pages_silent_build_fail.md - 푸시 후 사이트에 변화 없으면 deployment list부터 확인하는 패턴