Git 충돌 해결하는 방법

Git 충돌 해결하는 방법

Python
DevOps
Git 충돌 해결하는 방법
Author

gabriel yang

Published

October 8, 2024


Git 충돌 해결하는 방법

Git에서 commit 또는 merge 과정 중에 conflict(충돌)가 발생하는 경우, 이는 두 명 이상의 개발자가 동일한 파일의 동일한 부분을 수정했기 때문에 발생합니다. 충돌이 발생하면 Git은 자동으로 병합하지 못하고, 개발자가 수동으로 해결해야 합니다. 이번 글에서는 충돌이 발생했을 때 해결하는 방법을 단계별로 설명하겠습니다.

1. 충돌 상황 확인

충돌이 발생하면 Git은 충돌이 발생한 파일들을 표시해줍니다. 충돌이 발생한 상태에서 git status 명령어를 실행하면, 충돌이 난 파일을 확인할 수 있습니다.

git status

출력 예시:

On branch main
You have unmerged paths.
  (fix conflicts and run "git commit")

Unmerged paths:
  (use "git add <file>..." to mark resolution)
        both modified:   conflict-file.txt

위와 같이 both modified로 표시된 파일이 충돌이 발생한 파일입니다.

2. 충돌 내용 확인

충돌이 발생한 파일을 열어보면, Git은 충돌된 부분을 자동으로 표시해줍니다. 충돌된 부분은 아래와 같은 형식으로 나타납니다.

<<<<<<< HEAD
// 현재 브랜치에서 작업한 내용
=======
 // 다른 브랜치 또는 리모트에서 가져온 내용
>>>>>>> branch-name
  • <<<<<<< HEAD 아래는 내 브랜치에서 작업한 내용입니다.
  • ======= 아래는 병합하려는 브랜치의 내용입니다.
  • >>>>>>> branch-name은 병합하려는 브랜치 또는 커밋 이름을 표시합니다.

충돌 파일 예시

<<<<<<< HEAD
This is content from my branch.
=======
This is content from the other branch.
>>>>>>> branch-name

이제 두 내용 중 어느 것을 유지할지, 혹은 둘을 합쳐서 새로운 내용을 만들지 선택해야 합니다.

3. 충돌 해결

충돌을 해결하기 위해서는 수동으로 충돌 부분을 수정하고, 충돌 표시자(<<<<<<<, =======, >>>>>>>)를 모두 제거해야 합니다.

수정 예시

This is merged content from both branches.

이제 충돌 파일에서 원하는 방식으로 코드를 수정하고 저장한 후, 충돌 표시자를 모두 삭제합니다.

4. 충돌 해결 후 스테이징

충돌을 해결한 후에는 Git에게 해당 파일이 해결되었음을 알려줘야 합니다. 이를 위해 git add 명령어로 수정한 파일을 스테이징합니다.

git add conflict-file.txt

5. 커밋 완료

충돌을 해결하고 스테이징이 완료되었다면, 이제 커밋을 완료할 수 있습니다.

git commit

Git은 자동으로 커밋 메시지에 충돌이 해결되었음을 표시해줍니다. merge를 시도한 경우라면 merge 과정도 자동으로 완료됩니다.

충돌 발생을 줄이는 팁

  1. 자주 Pull 하기 충돌을 줄이기 위해서는 자주 원격 리포지토리에서 최신 상태를 가져오는 것이 좋습니다. 특히 팀 프로젝트에서 서로 작업을 병합하기 전에 최신 코드를 가져오면 충돌을 줄일 수 있습니다.

    git pull origin main
  2. 작은 단위의 작업 커밋을 자주하고, 작은 단위로 작업을 나누면 충돌이 발생할 가능성을 줄일 수 있습니다. 한 번에 너무 많은 파일을 변경하지 않도록 주의하세요.

  3. 코드 리뷰 & 커뮤니케이션 팀원 간에 코드 리뷰를 자주하고, 수정된 내용을 공유하는 것도 충돌을 줄이는 방법입니다. 서로 수정할 부분을 미리 알면 충돌 가능성이 줄어듭니다.

요약

Git 충돌은 협업 중에 자주 발생할 수 있는 상황이지만, 충돌을 해결하는 방법을 알면 문제를 빠르게 해결할 수 있습니다. 충돌이 발생했을 때는 먼저 git status로 충돌 파일을 확인하고, 해당 파일을 열어 충돌된 부분을 수동으로 해결한 후, 수정한 파일을 스테이징하고 커밋하면 됩니다. 충돌을 미리 방지하기 위해 자주 Pull을 하고, 팀원과의 커뮤니케이션을 강화하는 것도 좋은 방법입니다.

충돌이 발생할 때 당황하지 말고, 차근차근 해결하는 것이 중요합니다.