Conflict란? Git에서의 충돌과 해결 방법
KUKJIN LEE • 3개월 전 작성
Conflict란 무엇인가요?
Conflict(충돌)는 Git에서 두 개 이상의 브랜치가 동일한 파일의 동일한 부분을 서로 다르게 수정했을 때 발생하는 상황입니다. 이러한 충돌은 Git이 자동으로 병합(merge)할 수 없을 때 발생하며, 개발자가 수동으로 수정해야 하는 문제입니다.
Conflict는 협업 환경에서 빈번하게 발생할 수 있으며, 이를 잘 이해하고 해결하는 것이 Git 사용의 핵심입니다.
Conflict가 발생하는 상황
-
동일한 파일의 동일한 줄을 서로 다른 브랜치에서 수정했을 때
-
예: 브랜치 A와 브랜치 B에서 동일한 코드 줄을 서로 다르게 수정한 경우.
-
-
파일 삭제와 수정이 동시에 일어날 때
-
예: 한 브랜치에서 파일을 삭제했는데, 다른 브랜치에서는 해당 파일을 수정한 경우.
-
-
이름 변경이 충돌할 때
-
예: 한 브랜치에서 파일의 이름을 변경했는데, 다른 브랜치에서 같은 파일의 이름을 다른 이름으로 변경한 경우
-
Conflict 해결 방법
Git은 충돌을 감지하면 이를 사용자에게 알리고, 충돌된 파일을 명확히 표시합니다.
-
충돌된 파일 확인
-
git status
명령어를 통해 충돌이 발생한 파일 목록을 확인할 수 있습니다. -
충돌된 파일을 열어 보면, Git이 자동으로 생성한 충돌 마커(
<<<<<<<
,=======
,>>>>>>>
)를 볼 수 있습니다.
-
-
수동으로 충돌 해결
-
충돌 마커 사이의 코드를 확인하고, 어떤 코드를 유지할지, 어떤 코드를 삭제할지 결정합니다.
(마우스를 코드위에 올리면 선택할 수 있습니다.) -
필요한 경우 두 코드의 일부를 결합하여 새로운 코드를 작성할 수도 있습니다.
-
-
수정된 파일 저장 및 스테이징
-
충돌을 해결한 후, 파일을 저장하고
git add <파일명>
명령어로 변경된 파일을 스테이징합니다.
-
-
충돌 해결 커밋
-
충돌이 해결된 후
git commit
명령어를 사용하여 변경 사항을 커밋합니다. -
이때, 커밋 메시지에 충돌을 해결한 내용을 간단히 기록해 두는 것이 좋습니다.
-
Conflict 방지 팁
-
자주 Pull: 작업 중인 브랜치에 대해 자주
git pull
명령어를 사용하여 최신 변경 사항을 반영하면 충돌 가능성을 줄일 수 있습니다. -
작고 빈번한 커밋: 자주 커밋하고 푸시(push)하는 것이 충돌 발생을 최소화하는 데 도움이 됩니다.
-
의사소통: 팀원들과 작업 내용을 공유하고, 중요한 변경 사항에 대해 논의하는 것도 좋은 방법입니다.
마무리
Conflict는 Git을 사용하는 협업 과정에서 자연스럽게 발생할 수 있는 문제입니다. 이를 잘 이해하고 효과적으로 해결하는 방법을 익히면, 충돌 상황에서도 효율적으로 작업을 이어갈 수 있습니다.