Git merge conflict 시나리오

git switch -c 커맨드와 git checkout -b 커맨드로 각각 crow nest 브랜치를 새로 만들었다.

nest 브랜치에서 songs.txt 파일중 노래 몇개를 지우고 fluid motion 이라는 텍스트를 입력하고, 'add new song fluid motion' 이라는 메세지로 커밋을 했다.

그리고 nest 브랜치에서 songs.txt 파일에서 we found love 라는 텍스트를 입력하고, 'add new song we found love' 라는 메세지로 커밋을 한번 더 했다.

그리고 crow 브랜치로 스위치해서 songs.txt 파일에 savage 라는 텍스트를 추가하고 저장했다. 그리고 'add new song savage'라는 이름으로 커밋을 했다.

그리고 crow 브랜치 에서 한번 더 songs.txt 파일에 illusion 라는 텍스트를 추가하고 저장했다. 그리고 'add new song illusion'라는 이름으로 커밋을 했다.

지금까지의 상황을 깃 크라켄으로 보면 이런 모양이다.

crow와 nest는 각각 서로가 가지고 있지 않은 2개의 커밋을 가지고 있다. 

같은 파일에서 같은 라인을 일부 편집했기 하면 충돌이 발생한다.

crow브랜치에서 새로운 june이라는 브랜치를 만들어서 nest의 변경사항들을 병합하려고 한다

현재 상태를 깃 크라켄으로 보면 알 수 있듯, june crow는 같은 위치에 있고, 같은 커밋을 참조한다.

git merge nest

june 브랜치에서 nest와 merge를 시도하니 conflict가 났다... 병합 충돌이 있어서 자동 병합은 실패했다.

충돌을 해결하고, 결과를 커밋하라는 메세지가 표시되었다.

충돌 난 파일을 자세히 분석해보자.

<<<<<<<<<<<HEAD 부터 

=============== 까지는 원래 브랜치가 가지고 있던 것이다. 이 경우 june 브랜치가 가지고 있던 것이다.

그리고 =============== 부터

>>>>>>>>>>>>>>>nest 까지는 nest 브랜치의 변경 사항이 들어온 것이다.

충돌을 해결하기 위해서  nest 브랜치의 변경사항인지, june브랜치가 원래 가지고 있던 내용을 유지할 것인지 결정해야한다.


사실 두개 다 유지하는 방법도 있다.

충돌 표시를 제거하고 변경 사항을 등록하고 커밋하면 된다.

이렇게 파일에서 충돌표시를 제거했다.

git status를 하면 june 브랜치에서 충돌 상황이 있고, songs.txt 파일이 수정되었다는게 표시가된다.

그후 git add git commit 을 하면 잘 되는것을 확인할 수 있다.

깃 크라켄에서 확인해보면 nest 브랜치 june 브랜치로 병합되고, 새 병합 커밋을 갖는 것을 볼 수 있다.

 

JUNE .

20'S LIFE IN SYDNEY and BUSAN

    이미지 맵

    DevOps Study/Git and Github 다른 글

    이전 글

    다음 글