본문 바로가기

Tech develop

[트러블슈팅] Git 충돌 해결법 마스터하기

반응형

Git을 사용하다 보면 충돌(conflict)이 발생하는 상황을 종종 겪게 됩니다. 충돌은 두 명 이상의 개발자가 같은 파일의 동일한 부분을 동시에 수정할 때 발생합니다. 이런 상황은 협업 프로젝트에서 피할 수 없으며, 따라서 충돌을 어떻게 해결하느냐가 중요한 스킬이 됩니다. 이번 포스트에서는 Git 충돌을 해결하는 방법을 자세히 알아보겠습니다.

1. 충돌이 발생하는 이유

Git은 분산 버전 관리 시스템으로, 여러 개발자가 동시에 같은 코드베이스에서 작업할 수 있게 해줍니다. 충돌은 다음과 같은 상황에서 발생할 수 있습니다:

  • 두 사람이 같은 파일의 같은 라인을 수정한 경우
  • 한 사람이 파일을 수정하고 다른 사람이 그 파일을 삭제한 경우
  • 병합(merge) 또는 리베이스(rebase) 시에 변경 이력이 충돌하는 경우

2. 충돌 확인 방법

Git에서 충돌이 발생하면 다음 명령어로 충돌 상태를 확인할 수 있습니다:

git status

이 명령어는 충돌이 발생한 파일을 알려줍니다. 충돌이 있는 파일은 both modified 상태로 표시됩니다.

3. 충돌 해결하기

충돌을 해결하려면 충돌이 발생한 파일을 열고 충돌 부분을 수동으로 수정해야 합니다. 충돌 부분은 다음과 같은 형태로 표시됩니다:

<<<<<<< HEAD
로컬 변경 내용
=======
리모트 변경 내용
>>>>>>> branch-name

이곳에서 HEAD는 현재 로컬 브랜치의 변경 내용이고, branch-name은 병합하려고 하는 상대 브랜치의 변경 내용입니다. 이 부분을 수동으로 수정하여 원하는 형태로 병합합니다.

4. 충돌 해결 후 작업

충돌을 해결한 후에는 변경 사항을 스테이징하고 커밋해야 합니다. 다음 명령어를 사용합니다:

git add 파일명
git commit -m "충돌 해결: 파일명"

이로써 충돌이 해결된 변경 사항이 저장됩니다.

5. 충돌 예방 팁

충돌을 완전히 피할 수는 없지만, 다음과 같은 방법을 통해 충돌을 최소화할 수 있습니다:

  • 정기적으로 git pull을 수행하여 최신 변경 사항을 반영합니다.
  • 작은 단위로 자주 커밋하고 푸시합니다.
  • 팀원과의 커뮤니케이션을 통해 누구가 어떤 파일을 작업 중인지 공유합니다.
  • 기능 브랜치를 사용하여 작업을 분리합니다.

예제 코드: 간단한 충돌 해결

다음은 간단한 충돌 해결의 예제입니다. 두 명의 개발자가 같은 파일에서 충돌이 발생했다고 가정합니다.

// 애플리케이션 코드

function greet() {
<<<<<<< HEAD
    console.log("Hello from Alice!");
=======
    console.log("Hello from Bob!");
>>>>>>> feature/bob-greeting
}

위의 코드는 두 가지 다른 출력 메시지를 가집니다. 충돌을 해결하기 위해 다음과 같이 수정할 수 있습니다:

// 애플리케이션 코드

function greet() {
    console.log("Hello from Alice and Bob!");
}

이렇게 충돌 부분을 수정한 후에는 변경 사항을 스테이징하고 커밋하여 충돌을 해결합니다.

정리 및 요약

  • 충돌은 Git에서 흔히 발생하는 문제로, 같은 파일의 같은 부분을 두 명 이상이 수정할 때 발생합니다.
  • git status 명령어로 충돌 상태를 확인할 수 있습니다.
  • 충돌을 수동으로 수정한 후 git addgit commit을 사용하여 해결합니다.
  • 충돌을 예방하기 위해 팀원과의 커뮤니케이션과 정기적인 pull을 수행하는 것이 중요합니다.
  • 충돌 해결은 협업의 필수 기술이며, 이를 마스터하면 협업 효율을 높일 수 있습니다.
반응형