Conflict란? Git에서의 충돌과 해결 방법

KUKJIN LEE's profile picture

KUKJIN LEE3개월 전 작성

Conflict란 무엇인가요?

Conflict(충돌)는 Git에서 두 개 이상의 브랜치가 동일한 파일의 동일한 부분을 서로 다르게 수정했을 때 발생하는 상황입니다. 이러한 충돌은 Git이 자동으로 병합(merge)할 수 없을 때 발생하며, 개발자가 수동으로 수정해야 하는 문제입니다.

Conflict는 협업 환경에서 빈번하게 발생할 수 있으며, 이를 잘 이해하고 해결하는 것이 Git 사용의 핵심입니다.

 

Conflict가 발생하는 상황

  1. 동일한 파일의 동일한 줄을 서로 다른 브랜치에서 수정했을 때

    • 예: 브랜치 A와 브랜치 B에서 동일한 코드 줄을 서로 다르게 수정한 경우.

  2. 파일 삭제와 수정이 동시에 일어날 때

    • 예: 한 브랜치에서 파일을 삭제했는데, 다른 브랜치에서는 해당 파일을 수정한 경우.

  3. 이름 변경이 충돌할 때

    • 예: 한 브랜치에서 파일의 이름을 변경했는데, 다른 브랜치에서 같은 파일의 이름을 다른 이름으로 변경한 경우

 

Conflict 해결 방법

Git은 충돌을 감지하면 이를 사용자에게 알리고, 충돌된 파일을 명확히 표시합니다.

  1. 충돌된 파일 확인

    • git status 명령어를 통해 충돌이 발생한 파일 목록을 확인할 수 있습니다.

    • 충돌된 파일을 열어 보면, Git이 자동으로 생성한 충돌 마커(<<<<<<<, =======, >>>>>>>)를 볼 수 있습니다.

  2. 수동으로 충돌 해결

    • 충돌 마커 사이의 코드를 확인하고, 어떤 코드를 유지할지, 어떤 코드를 삭제할지 결정합니다.
      (마우스를 코드위에 올리면 선택할 수 있습니다.)

    • 필요한 경우 두 코드의 일부를 결합하여 새로운 코드를 작성할 수도 있습니다.

  3. 수정된 파일 저장 및 스테이징

    • 충돌을 해결한 후, 파일을 저장하고 git add <파일명> 명령어로 변경된 파일을 스테이징합니다.

  4. 충돌 해결 커밋

    • 충돌이 해결된 후 git commit 명령어를 사용하여 변경 사항을 커밋합니다.

    • 이때, 커밋 메시지에 충돌을 해결한 내용을 간단히 기록해 두는 것이 좋습니다.

 

Conflict 방지 팁

  • 자주 Pull: 작업 중인 브랜치에 대해 자주 git pull 명령어를 사용하여 최신 변경 사항을 반영하면 충돌 가능성을 줄일 수 있습니다.

  • 작고 빈번한 커밋: 자주 커밋하고 푸시(push)하는 것이 충돌 발생을 최소화하는 데 도움이 됩니다.

  • 의사소통: 팀원들과 작업 내용을 공유하고, 중요한 변경 사항에 대해 논의하는 것도 좋은 방법입니다.

 

마무리

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

New Tech Posts