브랜치 전략이나 Fork를 활용해 Pull Request(PR)를 생성하다 보면 반드시 한 번쯤 마주치는 것이 충돌(Conflict) 입니다.
충돌은 Git을 잘못 사용해서 생기는 문제가 아니라, 협업 과정에서 자연스럽게 발생하는 현상입니다.
충돌이란, 두 브랜치에서 같은 파일의 같은 부분을 서로 다르게 수정했을 때 Git이 “어느 내용을 선택해야 할지” 판단하지 못하는 상황을 말합니다.
예를 들어:
- test/branch1 → print("hello")
- main → print("codeit")
같은 test.py 파일의 동일한 줄을 다르게 수정했다면, Git은 자동 병합을 하지 못하고 충돌을 발생시킵니다.
이때 파일을 열어보면 아래와 같은 마커가 표시됩니다.
<<<<<<< HEAD
print("codeit")
=======
print("hello")
>>>>>>> test/branch1
- <<<<<<< ~ ======= : 현재 브랜치 내용
- ======= ~ >>>>>>> : 병합 브랜치 내용
이 마커는 “직접 선택하거나 수정하라”는 신호입니다.
1. GitHub에서 충돌 해결하기
Pull Request 화면에서 충돌이 발생하면 Resolve conflicts 버튼이 활성화됩니다.
여기서 선택할 수 있는 옵션은 다음과 같습니다.
- Accept Current → 현재 브랜치 내용 선택
- Accept Incoming → 들어오는 브랜치 내용 선택
- Accept Both → 두 코드 모두 유지
- 직접 수정 → 마커 삭제 후 코드 재작성
수정 후 Mark as resolved → Commit merge 를 누르면 충돌 해결 커밋이 생성됩니다.
다만, GitHub UI는 코드 전체 흐름을 보기 어렵기 때문에 복잡한 충돌에서는 실수 가능성이 있습니다.




2. 로컬에서 충돌 해결하기 (권장)
복잡한 충돌은 로컬 IDE에서 해결하는 것이 안전합니다.
1) 브랜치 이동
git checkout test/branch1
2) 병합 시도
git merge main
충돌이 발생하면 해당 파일을 열어 <<<<<<<, =======, >>>>>>> 마커 부분을 직접 수정합니다.
3) 수정 완료 후 커밋
git add test.py
git commit
4) 원격 반영
git push
이렇게 하면 충돌 해결 내용이 원격 저장소에 반영됩니다.
3. 정리
충돌은 같은 부분을 다르게 수정했을 때 발생하며, Git은 이를 자동으로 결정하지 않고 사용자에게 선택을 맡깁니다. GitHub UI에서 해결할 수도 있지만, 복잡한 경우에는 로컬 IDE에서 해결하는 것이 더 안전합니다.
'개발 환경 및 프로젝트 관리 > Git 사용법' 카테고리의 다른 글
| GitHub Pull Request 코드 리뷰 UI와 리뷰 흐름 정리 (0) | 2026.03.03 |
|---|---|
| Pull Request란 무엇인가 (0) | 2026.03.02 |
| 원격 저장소에 Push된 커밋을 되돌릴 때 Reset 대신 Revert를 사용하는 이유 (0) | 2026.03.01 |
| Git Status에서 반드시 확인해야 할 두 가지: Changes와 Not Staged (0) | 2026.03.01 |
| Git 원격 레포 생성 및 로컬 연동 시 초기 설정 정리 (0) | 2025.12.30 |