프로그래밍/프로그래밍 기타
[git] Git 실전 가이드 - 부록 E. Git 사용 실수 Top 10과 예방법
freeelifee
2025. 7. 4. 01:26
728x90
📎 부록 E. Git 사용 실수 Top 10과 예방법
❗ E.1 실수 1: .env 같은 민감 정보 커밋
문제
- API 키, DB 비밀번호 등 노출 → 보안사고
예방법
- .gitignore에 추가
- 이미 커밋했다면 git rm --cached + BFG로 기록 삭제
git rm --cached .env
bfg --delete-files .env
❗ E.2 실수 2: git push --force로 동료 커밋 덮어쓰기
문제
- 공동 작업 중 히스토리 파괴 → 팀 전체 작업 오류
예방법
- 강제 푸시 금지 규칙 적용 (branch protection)
- 어쩔 수 없이 쓸 땐 --force-with-lease로 안전하게
git push --force-with-lease
❗ E.3 실수 3: 브랜치 없이 전부 main에서 작업
문제
- 기능 분리, 리뷰, 배포 모두 불가능 → 혼란
예방법
- 작업별 기능 브랜치 생성
git checkout -b feature/login
- PR → 리뷰 → merge 전략 권장
❗ E.4 실수 4: 커밋 메시지가 "ㅇㅇ", "수정" 등 의미 없음
문제
- 커밋 히스토리로 코드 파악 불가
예방법
- 커밋 메시지 규칙 사용
# 예: Conventional Commits
feat(login): 로그인 폼 추가
fix(auth): 토큰 만료 오류 수정
❗ E.5 실수 5: 큰 이미지/영상 파일을 직접 커밋
문제
- 저장소 용량 증가, clone 시간 급증
예방법
- Git LFS 사용하거나 외부 스토리지 활용
git lfs install
git lfs track "*.mp4"
❗ E.6 실수 6: 충돌 파일을 무작정 덮어쓰기
문제
- 상대방 작업 손실, 버그 발생
예방법
- 충돌 났을 때는 구분 마커(<<<<) 보고 수동 해결
- GUI 도구로 비교 후 병합 추천
❗ E.7 실수 7: rebase를 남용하여 히스토리 꼬임
문제
- 공유 브랜치에 rebase하면 기존 커밋 해시 변경됨
예방법
- 공유 브랜치는 merge 사용, 개인 브랜치에서만 rebase
git rebase main # 개인 작업일 때만
❗ E.8 실수 8: 커밋 전에 테스트 안 하고 바로 push
문제
- 빌드 깨짐, 테스트 실패 → 전체 CI/CD 중단
예방법
- push 전에 반드시 테스트
npm test
# 또는
./gradlew test
- pre-push hook 설정 추천
❗ E.9 실수 9: 로컬에서 오래 작업 후 한 번에 대량 push
문제
- 충돌 대량 발생, 리뷰 어려움
예방법
- 작은 단위로 자주 커밋하고 push
- 기능별 브랜치 전략 적용
❗ E.10 실수 10: 커밋한 파일이 .gitignore에 있음 → 무시 안 됨
문제
- “왜 무시 안 되지?” 혼란
예방법
- 이미 추적 중인 파일은 무시 안 됨
- git rm --cached로 추적 해제 필요
✅ 정리표: 실수와 예방법 요약
실수 예방법
민감정보 커밋 | .gitignore + BFG 사용 |
강제 push | --force-with-lease 또는 금지 |
브랜치 없이 작업 | 기능 브랜치 사용 |
의미 없는 메시지 | 커밋 메시지 규칙 도입 |
대용량 파일 커밋 | Git LFS 사용 |
충돌 덮어쓰기 | 수동 병합 또는 GUI 병합 도구 |
공유 브랜치 rebase | 개인 브랜치만 rebase |
테스트 없이 push | pre-push 훅 + 수동 테스트 |
한번에 대량 push | 자주 커밋 + 자주 push |
.gitignore 적용 안됨 | git rm --cached 사용 |
🧪 연습문제
- 강제 푸시가 위험한 이유는?
- 이미 커밋된 .env 파일을 무시하려면 어떤 조치를 취해야 하나요?
- 공유 브랜치에서 rebase를 하면 왜 문제가 생기나요?
- Git에서 대용량 파일을 다루려면 어떤 도구를 써야 하나요?
728x90