목차
1. git conflict 발생 원인
이 글을 읽고 있다면 브랜치에 대한 개념은 이해를 하고 있을 것이라 가정을 하겠다.
일반적으로 프로젝트 팀원들은 서로 다른 브랜치에서 작업을 한다. 그리고 작업을 마치면 이 브랜치를 병합할 것이다. 그래야 하나의 완성된 코드가 되기 때문이다.
웬만한 경우는 git이 알아서 여러 브랜치의 코드들을 합쳐 준다. 그런데 만약 팀원들끼리 소통이 안 되서 동일한 파일, 동일한 라인에 서로 다른 코드를 넣었다고 해 보자. 그러면 git은 어떻게 코드를 합칠까?
이럴 때 git은 코드를 병합해주지 않는다. 대신 conflict라는 오류 메시지를 출력한다.
“너네 팀원들끼리 서로 다른 이야기 하고 있으니까(=서로 다른 두 코드가 충돌되니까) 말 맞춰와. 그러면 병합해줄게.”
라는 메시지다. 그러면]이러한 충돌 오류를 어떻게 해결하는 지 알아보자.
2. git conflict 해결 방법
conflict는 각 브랜치가 동일한 부분을 두고 서로 다른 코드가 나왔기 때문에 생기는 오류다. 그렇다면 해결 방법은 간단하다. 두 브랜치가 충돌난 부분을 동일하게 수정하면 된다. 자세한 방법은 사례를 통해 알아보자.
현재 master라는 브랜치와 cheolsu라는 브랜치 2개가 있다고 해보자. 저장소 내 파일은 ‘리얼테크’라는 이름의 메모장 파일만 하나 있다.
먼저 master 브랜치에서 다음과 같은 작업을 수행했다.
- ‘리얼테크’ 메모장 파일의 첫째 줄에 ‘리얼테크1’ 입력
- ‘컨트롤+s’로 저장
- git bash열고 <git add 리얼테크.txt>로 스테이징
- <git commit -m “리얼테크1″>로 커밋
이제 cheolsu 브랜치로 이동해서 다음과 같은 작업을 수행했다.
- ‘리얼테크’ 메모장 파일 열고 첫째 줄에 ‘리얼테크2’ 입력
- ‘컨트롤+s’로 저장
- git bash열고 <git add 리얼테크.txt>로 파일 스테이징
- <git commit -m “리얼테크2″>로 커밋
이제 아래 명령어를 입력해서 cheolsu 브랜치를 master 브랜치에 병합한다.
git checkout master
git merge cheolsu
그러면 아래 사진과 같이 충돌이 발생한다. master 브랜치와 cheolsu 브랜치가 똑같은 ‘리얼테크’ 메모장의 첫 째줄에 서로 다른 메시지(‘리얼테크1’과 ‘리얼테크2’)를 입력하고 있기 때문이다.

이때는 먼저 충돌이 발생한 파일을 찾는다. 아래 사진처럼 git이 어떤 파일에서 충돌이 났는지 알려준다. 현재 ‘리얼테크.txt’라는 파일에서 충돌이 발생했음을 알 수 있다.
이제 그 파일에 들어가 본다. 이때 파일을 메모장이나 VScode와 같은 텍스트 에디터로 열어야 한다.1 텍스트 에디터로 여는 방법을 모른다면 주석을 참조하길 바란다.
그러면 아래와 같이 충돌이 발생한 부분을 표시하고 있다.

이 부분을 동일하게 수정해준다. 나는 이 텍스트들을 모두 지우고 ‘리얼테크 수정본’ 이라는 글자를 입력했다.

그리고 아래 명령어를 입력하여 해당 내용을 커밋한다. 일반적인 커밋 명령어와 동일하다.
git add 리얼테크.txt
git commit -m "리얼테크 수정본"
이 과정을 완료하면 merge할 때 파일 충돌 현상을 없앨 수 있다. 정리하면 git conflict 해결 방법은 아래와 같다.
- 충돌이 발생한 파일 확인
- 텍스트 에디터로 충돌된 파일 열기
- 충돌된 부분 확인 후 수정
- 다시 커밋
이 글은 깃허브 공식 블로그의 병합 충돌 해결 방법에 관한 글을 참조했습니다.
- 해당 파일의 아이콘 우클릭 – 연결 프로그램 – 메모장 등 에디터 선택 ↩︎