콘텐츠로 이동

Git 커밋 30초 보험 - placeholder/누락 함정 피하기

한 줄 요약: git commit 직전에 git status --short로 어떤 파일이 트럭에 실렸는지(stage) 30초만 확인하면, "로컬에 채워둔 값이 placeholder인 채로 푸시"되는 12시간짜리 함정을 막는다.

배경 - 2026-05-10 사고

뉴스레터 폼에 D1 데이터베이스 연결하려고 wrangler.toml에 ID를 적어둠.

# 사용자가 로컬에서 직접 채운 값
database_id = "7c08309a-15ff-418f-ad14-d243ef31b6d7"

근데 Cloudflare 빌드 로그에는:

Error 8000022: Invalid database UUID (REPLACE_WITH_DATABASE_ID)

뭔 일? git diff HEAD -- wrangler.toml 쳐보니:

-database_id = "REPLACE_WITH_DATABASE_ID"
+database_id = "7c08309a-15ff-418f-ad14-d243ef31b6d7"

로컬에는 채웠지만 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됐는지

git status --short
출력:
M  wrangler.toml          ← M이 왼쪽 = stage됨, commit하면 들어감
 M src/index.astro        ← M이 오른쪽 = stage 안 됨, commit해도 안 들어감
?? new-file.txt           ← ?? = git이 모르는 untracked 파일

왼쪽 컬럼(stage됨)이 내가 의도한 것과 일치하는지만 보면 됨.

2. stage된 변경 내용 미리보기

git diff --cached
"내가 commit하면 정확히 어떤 줄이 바뀔지" 미리 봄. placeholder 잔존 같은 것 잡힘.

3. 의심되는 파일 한 개만 비교

git diff HEAD -- wrangler.toml
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부터 확인하는 패턴