개발 환경 및 프로젝트 관리/Git 사용법

Git Pull Request 머지 충돌 해결 방법 정리

Data Jun 2026. 3. 3. 09:49

브랜치 전략이나 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에서 해결하는 것이 더 안전합니다.