Conflict란? Git에서의 충돌과 해결 방법
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을 사용하는 협업 과정에서 자연스럽게 발생할 수 있는 문제입니다. 이를 잘 이해하고 효과적으로 해결하는 방법을 익히면, 충돌 상황에서도 효율적으로 작업을 이어갈 수 있습니다.