본문 바로가기
개발 도구/Git

컨플릭트(Conflict) 났을 때 해결하는 방법

by ♥︎해이나♥︎ 2022. 11. 19.
반응형

지난 포스팅에서는 브랜치 머지하는 방법에 대해서 설명했다. 이번 포스팅에서는 컨플릭트가 발생했을 때의 해결 방법을 설명하려고 한다.

 

컨플릭트 해결 방법 타이틀

 

컨플릭트(Conflict)가 발생했다!

나는 premium 이라는 브랜치와 main 이라는 브랜치 위에서 각각 작업을 했다. 그 다음 다시 premium 브랜치로 이동해서 main 브랜치의 작업 내용을 가져와 합치기로 했다. 그래서 git merge main 이라는 커맨드를 입력하고 실행시켰는데, 아래와 같은 오류 메세지가 떴다.

 

git merge main

 

"CONFLICT (content) : Merge conflict in calculator.py"

이 메세지는 머지를 하다가 calculator.py 파일에서 충돌이 발생했다는 의미이다. 두 개의 코드가 달라서 어떤 코드로 합쳐야 할지 알 수 없을 때 컨플릭트(Conflict)가 발생한다.

 

어떤 부분이 문제인지 확인하기 위해 해당 파일을 실행해 보았다. 내가 수정했던 코드가 아래와 같이 변경되어 있었다.

 

컨플릭트 발생한 파일

 

살펴보면...

 

  • <<<<<<< HEAD 라고 쓰여있는 부분 아래가 현재 속해있는 브랜치에서 수정한 부분을 가리킨다.
  • ======= 이 선을 기준으로 아랫 부분은 가져오고 싶었던 브랜치(나의 경우에는 main)에서 수정한 부분을 가리킨다.

 

내용이 divide_premium, divied_free로 각각 달라서 어떤 내용으로 합쳐야 할지 몰라 컨플릭트가 발생한 것이다.

 

컨플릭트(Conflict) 해결 방법

컨플릭트를 해결하는 방법을 간단하게 요약하자면 "컨플릭스가 발생한 파일을 열고, 원하는 결과에 맞게 코드를 수정한 후, 다시 커밋"하면 된다.

 

위의 컨플릭트를 해결하는 과정을 예제로 설명하려고 한다. 컨플릭트가 발생했을 때에는 두 개의 코드 중에서 한 가지를 골라 사용하거나, 혹은 아예 새로운 코드를 작성해도 된다. 나는 premium, free 말고 new라는 새로운 이름을 사용하기로 했다. 그래서 일단 모든 코드를 지우고 아래와 같이 작성했다.

 

컨플릭트 해결 방법

 

그 다음 터미널로 이동해서 다시 커밋을 해주면 되는데, 먼저 파일을 Staging Area로 옮기고 git commit 명령어를 옵션 없이 실행한다. 그럼 새로운 화면이 뜨는데 아래와 같은 문구가 있을 것이다.

 

Merge branch 'main' into premium

# Conflicts :

# calculatoer.py 

 

이건 컨플릭트를 해결하고 커밋을 하면 자동으로 뜨는 메세지이다. 변경해도 되고 그대로 사용해도 된다.

 

컨플릭트 해결 방법
컨플릭트 해결 방법

 

나는 이 메세지를 그대로 사용하기로 하고 :wq 입력 후 엔터를 쳐서 그대로 저장했다. git history로 확인해보면 변경된 사항을 확인할 수 있다.

 

git commit
커밋 히스토리 확인

 

컨플릭트(Conflict) 파일이 너무 많다면?

머지를 했는데 컨플릭트 파일이 너무 많다면 어떻게 해야 할까? 원리는 같지만 두가지 방법으로 해결이 가능하다.

 

  • 파일을 하나씩 해결하고 git add 파일명 명령어를 사용하여 하나씩 옮긴 후 커밋한다. 
    만약 중간 상황을 확인하고 싶다면 git status로 확인이 가능하다.
  • 파일을 한꺼번에 해결하고 git add . 명령어를 사용하여 한꺼번에 옮긴 후 커밋한다.

이제 드디어 나는 컨플릭트가 두렵지 않은 사람이 되었다! (과연...) 이 포스팅이 git 공부를 하는 분들에게 도움이 되었으면 좋겠다.

반응형

댓글