최근에 프로젝트를 진행하는 강의를 들으면서 수업 전 날, 미리 내 깃허브 레포에 수업에 필요한 코드를 push해놓고 프로젝트에서 사용하는 OS 내에서 내 레포를 pull해 코드를 사용했다.
수업은 주에 한 번이라 전 주에 내가 로컬에 어떤 코드를 작성하고 수정했는지, 원격 레포에는 어떤 코드가 올라가 있는지 까먹게 되는데 아무 생각없이 pull을 시도하였다가 Conflict이 발생했다.
회사를 다니던 때에 개발 중인 서비스에 대한 계정 정보, Docker-compose 파일 등 내가 사용하기 편한 환경 설정을 로컬에 구성하여 개발을 진행했다. 하나의 feature에 대한 개발 작업이 완료되고 develop 브랜치와 merge를 하려 PR을 만들었는데, Conflict이 발생했다.
이 외에도 git을 사용하는 환경에서는 나를 당황시키는 conflict이 정말 많이 발생할 것이다. 위 시나리오는 실제 내가 겪었던 사례 기반이다.
그렇다면 우리는 conflict이 발생했을 때 어떤 식으로 해결을 해야할까?
conflict이 발생했을 때 해결 방법은 매우 단순하다.
git merge --abort
를 실행하면 merge가 취소된다.
git status
를 실행해보면 현재 conflict가 발생한 파일의 이름이 출력된다. 그럼 conflict가 발생한 파일을 찾아가보자.
conflict가 발생한 지점이 보인다.
<<<<<<< HEAD 부터 ======= 사이의 내용은 나의 로컬 환경 수정 사항들을 나타낸다. 이 수정 사항은 아직 원격 저장소에 반영되지 않은 상태이다.
======= 부터 >>>>>>> 사이에는 원격 저장소나 다른 브랜치의 수정 사항들을 나타낸다.
여기서 선택할 수 있는 옵션은 여러가지가 존재한다.
이후, commit을 날려주고 merge를 진행하면 된다.