v.02 / 2026
HOME / PROGRAMMING / №020 2026.04.24
← Programming // 020 · PROGRAMMING / GIT

GitHub 협업에서 자주 발생하는 문제와 해결 방법 정리

팀 프로젝트에서 GitHub를 사용하다 보면 비슷한 실수가 반복됩니다. 개인 작업과 달리 여러 사람이 같은 저장소를 공유하는 만큼, 한 명의 실수가 전체 팀에 영향을 줄 수 있습니다. 자주 발생하는 문제와 대처법을 항목별로 정리합니다.

1. 머지 충돌 (Merge Conflict)

같은 파일의 같은 줄을 두 사람이 동시에 수정하면 Git이 어느 쪽을 선택할지 판단하지 못해 충돌이 발생합니다.

주요 원인

  • 오래된 브랜치를 main에서 최신화하지 않고 장기간 작업
  • 같은 파일을 여러 명이 동시에 수정

해결 방법

git fetch origin
git rebase origin/main   # 또는 git merge origin/main
# 충돌 파일 수동 수정 후
git add .
git rebase --continue    # rebase 사용 시

PR을 자주, 작게 올리면 충돌 빈도가 크게 줄어듭니다.

2. 민감 파일 커밋

.env, API 키, 비밀번호가 포함된 파일이 실수로 원격에 올라가는 경우입니다.

예방 — .gitignore 미리 설정

.env
.env.local
*.pem
config/secrets.yaml

이미 올라간 경우

git rm --cached .env
echo ".env" >> .gitignore
git commit -m "remove .env from tracking"
git push

이미 원격에 올라간 비밀값은 즉시 폐기하고 재발급해야 합니다. 커밋 기록에서 지워도 캐시나 GitHub 스냅샷에 남을 수 있습니다.

3. main 브랜치에 직접 Push

보호되지 않은 main에 직접 커밋하면 리뷰 없이 코드가 반영되어 배포 문제로 이어질 수 있습니다.

GitHub 브랜치 보호 설정 경로

Settings → Branches → Branch protection rules에서:

  • Require a pull request before merging 활성화
  • Require approvals (1인 이상)
  • Do not allow bypassing the above settings 체크

4. Force Push로 히스토리 손상

git push --force는 원격 커밋 히스토리를 덮어씁니다. 다른 팀원이 이미 pull한 상태라면 심각한 혼선이 생깁니다.

명령어위험도권장 상황
git push낮음일반 푸시
git push --force-with-lease중간내 브랜치를 rebase한 후
git push --force높음사용 지양

--force-with-lease는 원격에 내가 모르는 커밋이 있으면 push를 거부하므로 훨씬 안전합니다.

5. 커밋 메시지 규칙 불일치

팀마다 형식이 다르면 히스토리 추적과 자동화 도구 연동이 어려워집니다.

Conventional Commits 형식 예시

feat: 로그인 페이지 추가
fix: 사용자 이름 유효성 검사 오류 수정
docs: API 문서 업데이트
chore: 의존성 버전 업그레이드
refactor: 인증 로직 분리

.gitmessage 템플릿을 공유하거나 commitlint로 자동 검증하면 효과적으로 통일할 수 있습니다.

6. PR이 너무 커서 리뷰가 어려움

변경 파일이 수십 개를 넘는 PR은 리뷰어가 맥락을 파악하기 어렵고 버그를 놓칠 가능성이 높습니다.

권장 기준

항목기준
변경 파일 수10개 이하
코드 라인 변경400줄 이하
PR 범위기능 하나 또는 버그 픽스 하나

기능이 크다면 작업 단위를 나눠 여러 PR로 분리하는 것이 좋습니다.

주의사항

  • 공유 브랜치(main, develop)에는 --force 옵션을 절대 사용하지 않습니다.
  • .gitignore는 프로젝트 시작 시점에 팀 전체가 합의하고 먼저 설정합니다.
  • 원격에 올라간 민감 정보는 삭제가 아닌 무효화(재발급)로 대응해야 합니다.
// RELATED №053 git branch는 포인터, git worktree는 작업 공간 — 언제 무엇을 쓸까 [PROGRAMMING] Git 2026.05.04 №052 Roboflow Safety Helmet ONNX 모델이란? 안전모 감지의 개념과 활용 [PROGRAMMING] AI 2026.05.04 №051 LLM Wiki: 위키 유지보수를 LLM에게 맡기다 [PROGRAMMING] Tools 2026.05.04
목록으로