본문 바로가기

ETC/Git

GitHub 5 - 충돌 해결하기

주로 두 커밋이 같은 파일을 자동 병합하는데 실패할 경우 충돌이 발생합니다.

이럴 때 겁먹지 말고 수동적으로 하는 방법도 있으니 참고해보세요.

 

 

1. 에디터로 직접 수정하여 충돌 해결하기

일부러 충돌이 나도록 만들어봐야 하니 conflict라는 브랜치를 생성해줍니다.

conflict 브랜치에 체크아웃 된 상태에서 파일 내용을 수정해봅니다.

 

 

 

저장 후 커밋합니다.

 

 

conflict 브랜치에 master를 한 단계 벗어난 커밋이 생성되었습니다.

 

 

 

이제 master 브랜치로 체크아웃하여 파일을 또 수정해봅니다.

마찬가지로 이번에도 저장 후 커밋을 해줍니다.

 

 

 

master 브랜치에서 '충돌 해결 설명 추가' 커밋을 병합해줍시다.

 

 

아앗... 드디어 원하던 충돌이 일어났습니다.

충돌이 일어난 파일을 수정해볼까요?

 

 

 

이전 글(병합)에서 보던 충돌 모습과 똑같습니다.

저는 두 브랜치의 내용 모두 남겨주고 싶습니다.

 

 

 

직접 수동으로 지워주고 합쳐줬습니다.

저장 후 커밋해줍니다.

 

충돌이 일어난 파일을 수정하고 커밋할 때 커밋 메시지에 자동으로 아래와 같이 충돌 파일 목록이 자동으로 작성됩니다.

 

 

다음 충돌 해결 방법을 따라하고 싶다면 아래 처럼 진행해주세요.

merge 전 상태로 돌아가고 싶다면 커밋 우클릭 후 '이 커밋까지 현재 브랜치를 초기화'를 눌러줍니다.

 

 

 

Hard 모드 선택.

merge 전 상태로 돌아왔습니다.

 

 

2. 병합 툴을 이용하여 충돌 해결하기

 

위와 같이 직접 병합을 하고 마찬가지로 충돌을 내보겠습니다.

 

 

 

충돌이 나겠죠?

대충 보니까 conflict 브랜치 내용으로 바꾸면 되겠네, 그걸로 바꿔야겠다 싶을겁니다.

 

 

 

SourceTree로 돌아와서 스테이지에 올라가지 않은 파일에 충돌난 파일을 우클릭 후,

충돌 해결 -> '저장소'것을 사용하여 해결을 눌러줍니다.

 

'내것'을 이용해 해결한다는 것은 master 브랜치를 이용한다는 것이고

'저장소것'은 현재 conflict 브랜치를 사용한다는 뜻입니다.

 

 

 

'저장소것'을 사용하여 해결하니 conflict 브랜치의 내용으로 업데이트가 되었습니다.

master 브랜치의 내용으로 업데이트하려면 '내것'을 이용해 해결하는 방법으로 시도하면 되겠습니다.