Git을 사용하다 보면 가끔 원인을 파악하기 어려운 오류 메시지를 마주하게 됩니다. 이 글에서는 버전 관리 작업 중 자주 발생하는 오류 하나를 살펴보고, 실질적인 해결 방법을 단계별로 안내해 드리겠습니다.
다음과 같은 오류 메시지를 본 적이 있으신가요?
Pull is not possible because you have unmerged files. Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution, or use 'git commit -a'.
오류가 발생하는 원인
이 오류는 작업 디렉터리에 아직 해결되지 않은 병합 충돌(merge conflict)이 있는 파일이 존재할 때 발생합니다. Git은 충돌 상태가 정리되기 전까지는 원격 저장소의 변경 사항을 안전하게 가져올 수 없기 때문에, 먼저 해당 파일들을 확인하고 충돌 부분을 수정한 뒤, 파일을 스테이징(staging)하고 커밋하여 '충돌이 해결되었음'을 Git에 알려줘야 합니다.
해결 방법
1단계: 현재 상태 확인하기
가장 먼저 할 일은 명령줄에서 git status를 실행하는 것입니다. 이 명령은 어떤 파일들이 병합되지 않은 상태인지 정확히 알려주며, 출력 결과는 대략 다음과 같습니다.
Unmerged paths: use 'git add/rm <file>' to update what will be committed [파일 목록]
2단계: 병합 충돌 검토하기
팀 동료와 함께 프로젝트를 진행 중이라면, 충돌은 동료가 작성한 코드와 관련된 경우가 많습니다. 실수로 중요한 코드를 삭제하거나 덮어쓰는 일이 없도록, 충돌이 발생한 부분을 동료와 함께 꼼꼼히 검토하는 것이 좋습니다.
3단계: 충돌 해결 후 커밋하기
모든 병합 충돌을 해결했다면, git add/rm <file> 명령으로 해당 파일을 스테이징하거나, 간편하게 git commit -a 명령으로 변경된 모든 파일을 한 번에 커밋할 수 있습니다.
4단계: 원격 저장소에서 변경 사항 가져오기
이제 충돌이 모두 정리되었으므로, 다음 명령을 실행하여 원격 저장소의 최신 변경 사항을 정상적으로 가져올 수 있습니다.
git pull origin [master | main | <브랜치 이름>]
이처럼 'Pull is not possible' 오류는 대부분 해결되지 않은 병합 충돌 때문에 발생합니다. git status로 충돌 파일을 확인하고, 충돌을 정리한 뒤 커밋하는 순서만 기억하면 어렵지 않게 해결할 수 있습니다.