글 목록으로 돌아가기
최오키 개발블로그 3분 읽기

Git 머지 충돌 해결하는 방법과 절차

Git 머지 충돌이 발생했을 때의 증상과 원인, 해결 방법을 단계별로 정리하여 실무에서 유용하게 활용할 수 있도록 안내합니다.


증상 및 오류 메시지

Git에서 머지 충돌이 발생하면, 터미널에 다음과 같은 메시지가 표시됩니다:

CONFLICT (content): Merge conflict in <파일명>

이 메시지는 두 개의 브랜치에서 동일한 파일의 동일한 부분을 수정했을 때 발생합니다. 이 경우 Git은 어떤 변경 사항을 반영해야 할지 결정할 수 없으므로, 개발자가 직접 선택해야 합니다. 머지 충돌이 발생하면 Git의 상태를 확인하기 위해 git status 명령어를 입력해야 하며, 충돌이 발생한 파일 목록을 확인할 수 있습니다.

post image

이미지 출처: https://checherry.tistory.com/47

머지 충돌의 원인

머지 충돌은 주로 다음과 같은 상황에서 발생합니다:

  1. 같은 줄 수정: 두 브랜치에서 동일한 파일의 같은 줄을 수정한 경우.
  2. 파일 삭제와 수정: 한쪽 브랜치에서 파일을 삭제하고, 다른 쪽에서 수정한 경우.
  3. 이름 변경: 파일이 한쪽에서 이동되거나 이름이 변경된 경우.

이러한 상황에서 Git은 어떤 변경 사항을 유지해야 할지 판단할 수 없으므로 충돌을 발생시킵니다.

충돌 확인 명령어

충돌이 발생했을 때 확인할 수 있는 명령어는 다음과 같습니다:

git status

이 명령어를 통해 충돌이 발생한 파일 목록과 상태를 확인할 수 있습니다. 충돌이 발생한 파일을 열어보면, 다음과 같은 충돌 마커가 포함된 내용을 볼 수 있습니다:

<<<<<<< HEAD
현재 브랜치의 코드
=======
합치려는 브랜치의 코드
>>>>>>> feature-branch

충돌 해결 절차

머지 충돌을 해결하는 과정은 다음과 같습니다:

  1. 충돌 파일 확인: git status 명령어로 충돌이 발생한 파일 목록을 확인합니다.
  2. 충돌 파일 열기: 충돌이 발생한 파일을 열어 충돌 마커를 확인합니다.
  3. 코드 선택: 어떤 코드를 남길지 결정합니다. 필요에 따라 두 코드를 합치는 것도 가능합니다.
  4. 충돌 마커 제거: 선택한 코드 외의 충돌 마커를 모두 제거합니다.
  5. 변경 사항 스테이지: git add <파일명> 명령어로 수정한 파일을 스테이지에 추가합니다.
  6. 머지 완료: git commit 명령어로 머지를 완료합니다.

이 과정을 통해 Git은 충돌이 해결되었다고 인식하게 됩니다.

흔한 실수

머지 충돌을 해결할 때 자주 발생하는 실수는 다음과 같습니다:

  • 충돌 파일을 확인하지 않고 수정: git status를 확인하지 않고 바로 파일을 수정하는 경우.
  • 충돌 마커를 남긴 채 커밋: 충돌 마커를 제거하지 않고 커밋하는 경우.
  • 변경 사항을 스테이지하지 않음: 수정 후 git add를 하지 않는 경우.

재발 방지 체크리스트

머지 충돌을 예방하기 위해 다음과 같은 체크리스트를 활용할 수 있습니다:

  • 자주 Pull하기: 다른 팀원과의 작업을 자주 머지하여 충돌 가능성을 줄입니다.
  • 작은 단위로 커밋: 변경 사항을 작게 나누어 커밋함으로써 충돌을 줄입니다.
  • 코드 리뷰: 팀원 간의 코드 리뷰를 통해 변경 사항을 사전에 공유합니다.

결론

Git 머지 충돌은 개발 과정에서 자주 발생하는 문제입니다. 그러나 올바른 절차를 따르면 쉽게 해결할 수 있습니다. 충돌이 발생했을 때는 당황하지 말고, 각 단계를 차근차근 따라가며 해결해 나가면 됩니다. 충돌을 예방하기 위해서는 팀원들과의 소통과 자주 머지하는 습관이 중요합니다.

실무 적용 체크리스트

  • Git merge conflict 해결 순서을 적용하기 전에 현재 운영 환경의 기준값과 예외 상황을 먼저 정리합니다.
  • 변경 전후로 확인할 지표를 정하고, 문제가 생겼을 때 되돌릴 수 있는 절차를 문서화합니다.
  • 한 번에 모든 서버나 서비스에 적용하기보다 작은 범위에서 검증한 뒤 점진적으로 확대합니다.
  • 담당자, 확인 시간, 장애 판단 기준을 명확히 남겨 같은 문제가 반복될 때 빠르게 대응할 수 있게 합니다.

참고 이미지

이미지 출처: https://toolsolve.tistory.com/entry/Git-merge-conflict-%EB%82%AC%EC%9D%84-%EB%95%8C-%EA%B0%80%EC%9E%A5-%EB%A8%BC%EC%A0%80-%ED%95%B4%EC%95%BC-%ED%95%A0-%EA%B2%83


참고한 자료

Related posts

Other 효율적인 Git 커밋 메시지 전략: 협업의 시작 Other Git push 시 발생하는 non-fast-forward 오류 해결 방법 Other Git에서 Detached HEAD 상태 발생 원인과 해결 방법