본문 바로가기
CI.CD/GIT

[GIT] 충돌(Conflict) 발생 원인과 해결 가이드

반응형

이번 포스팅에서는 [브랜치와 병합] 파트의 세부 주제인 충돌(Conflict) 발생 원인과 해결 가이드에 대하여 상세히 알아보겠습니다.

1. 충돌(Conflict)이 발생하는 이유

병합 과정에서 빈번하게 겪게 되는 난관이 바로 병합 충돌(Merge Conflict)입니다. 이는 두 개의 브랜치가 동일한 파일의 동일한 라인을 서로 다르게 수정했을 때 발생합니다. Git은 어느 코드를 최종적으로 선택해야 할지 판단할 수 없기 때문에, 자동 병합을 중지하고 사용자에게 직접 결정을 맡깁니다.

2. 충돌 해결 절차

충돌이 발생하면 당황하지 말고 아래의 절차에 따라 순차적으로 코드를 정리합니다.

# 1. 병합 시도 시 충돌 메시지 확인 후 상태 파악
$ git status
# (Both modified 상태로 표기된 파일들이 충돌 파일입니다.)

충돌 파일의 내부를 열어보면 Git이 삽입한 마커 기호들이 보입니다.

<<<<<<< HEAD
현재 체크아웃된 브랜치(main)의 코드 내용
=======
병합하려는 브랜치(feature-login)의 코드 내용
>>>>>>> feature-login

이 기호들(<<<<<<<, =======, >>>>>>>)을 모두 지우고, 남기고자 하는 최종 코드만 남긴 채 파일을 저장합니다.

# 2. 충돌을 수동으로 해결한 파일을 다시 준비 영역에 올림
$ git add 충돌해결파일.js

# 3. 마무리 병합 커밋 생성
$ git commit -m "충돌 해결 및 병합 완료"

에디터 활용: VS Code, IntelliJ와 같은 현대적인 통합 개발 환경(IDE)들은 충돌 해결 인터페이스를 제공하여 버튼 클릭 한 번에 '현재 변경 사항 수락', '수신된 변경 사항 수락'을 선택할 수 있도록 도와줍니다. 가급적 IDE의 내장 도구를 활용하는 것을 권장합니다.


지금까지 충돌(Conflict) 발생 원인과 해결 가이드의 개념과 구체적인 활용 방안에 대해 살펴보았습니다. 이어지는 다음 포스팅에서 관련 심화 주제를 지속적으로 다루어보겠습니다.

반응형