cau-dosc.github.io

합병 충돌 해결하기

git pull/git merge/git rebase 등의 명령어 수행 도중에 아래처럼 충돌이 발생하면 이를 해결하여야 합니다.

git status로 충돌난 파일 확인

충돌 부분 찾아 수정

Git에서의 충돌을 설명하기 위해 아래처럼 source.cpp 파일이 두 갈래로 나뉘어 commit 된 시나리오를 가정합니다.

내 PC에서 git pull 명령어로 합치기를 시도하면 source.cpp가 충돌하여 아래처럼 나타납니다.

#include <stdio.h>
int main () {
<<<<<<< HEAD
    printf("AAAAA\n");
=======
    printf("BBBBB\n");
>>>>>>> 4007bc0... 
    return 0;
}

=======, >>>>>>>, <<<<<<<를 지우고 그 안의 코드를 필요에 따라 수정한 뒤 저장합니다.

아래는 수정하여 저장한 예시입니다.

#include <stdio.h>
int main () {
    printf("AAAAA and BBBBB\n");
    return 0;
}

저장한 뒤 해당 파일을 git add 명령어로 추가한 뒤 git commit을 수행하면 충돌을 해결한 커밋(merge-commit)이 생성됩니다.

git push로 충돌 해결한 내용을 GitHub에 다시 업로드

충돌 해결한 커밋을 GitHub에 올려야 다른 사람이 내가 작성한 커밋이 합쳐진 내용을 다운로드할 수 있습니다.