프로그래밍/프로그래밍 기타

[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 사용

🧪 연습문제

  1. 강제 푸시가 위험한 이유는?
  2. 이미 커밋된 .env 파일을 무시하려면 어떤 조치를 취해야 하나요?
  3. 공유 브랜치에서 rebase를 하면 왜 문제가 생기나요?
  4. Git에서 대용량 파일을 다루려면 어떤 도구를 써야 하나요?

 

728x90