Git - Merge Conplict? 해결방법

3143 단어 gitmerge complictgit

깃은 줄 단위로 수정여부를 확인합니다.
그래서 각 브랜치에 같은 파일 이름을 가지고 있으면서 같은 줄을 수정했을 때 브랜치를 머지하면 merge conflict(브랜치 충돌)이 발생합니다.

같은 파일의 같은 위치를 수정하여 머지했을 때 어떻게 브랜치 충돌이 생기고, 충돌을 해결하는 포스팅입니다.

https://abled.tistory.com/21?category=1019935
위 블로그 포스팅을 참고해 작성했습니다.

$cd
$git init merge-conflict
$cd merge-conflict
$vi yama.txt


내용을 입력하고 저장합니다. yama.txt 파일을 스테이징하고 'master 1'이라는 메시지로 커밋합니다.

$git add yama.txt
$git commit -m "master 1"

master 브랜치에 커밋이 잘 된 것을 확인하고 yama 브랜치를 만듭니다.

$git branch yama

아직 yama 브랜치로 체크아웃하지 않았기 때문에 현재 master 브랜치에 있고, master 브랜치의 최근 커밋을 yama 브랜치가 가져왔으니 양쪽 브랜치에 yama.txt가 있습니다.
현재 master 브랜치에서 yama.txt 파일을 아래 이미지 같이 수정합니다.

수정한 yama.txt 를 'master 2'라는 커밋 메시지와 함께 커밋합니다.

$git commit -am "master 2"

커밋이 된 걸 확인하고 yama 브랜치로 체크아웃합니다.
체크아웃 후 yama.txt 파일을 아래의 이미지 같이 수정합니다.

$git checkout yama
$vi yama.txt


master 브랜치에서 추가 내용을 입력했던 위치와 같은 곳에 'yama content'를 입력하고 저장합니다.
그리고 yama.txt 파일을 'yama 1'이라는 커밋 메시지와 함께 커밋합니다.

$git commit -am "yama 1"

yama 브랜치에 커밋이 된 것을 확인하고 master 브랜치로 체크아웃 합니다.

$git checkout master

master 브랜치로 체크아웃했으면 머지를 해봅니다.

$git merger yama


yama.txt파일을 자동 머지하는 동안 conflict(충돌)이 발생했다는 메시지가 보입니다. 충돌이 생긴 파일은 자동으로 머지할 수 없으므로 사용자가 직접 충돌 부분을 해결한 후 커밋해야 합니다.
충돌이 생긴 yama.txt파일을 확인합니다.

$vi yama.txt

yama.txt의 내용이 많이 바뀌어 있습니다.
master 브랜치의 내용과 yama 브랜치의 내용이 한꺼번에 나타났기 때문입니다.
'<<<<<<HEAD'와 '======' 사이의 내용은 현재 브랜치(master)에서 수정한 내용입니다.
'======' 와 '>>>>>>yama' 사이의 내용은 머지할 브랜치(yama)에서 수정한 내용입니다.

이렇게 양쪽 브랜치의 내용을 참고하면서 직접 내용을 수정하여 커밋해야 합니다.
그럼 아래 이미지와 같이 수정을 하고 저장한 뒤 'merge yama branch'라는 커밋 메시지와 함께 yama.txt를 스테이징하고 커밋하겠습니다.

$git commit -am "merge yama branch"

커밋이 잘 되었다면 git log를 사용해 지금까지 만든 브랜치와 커밋의 관계를 확인해봅니다.

현재 master브랜치에 yama 브랜치 내용까지 잘 머지되어 있는 것을 확인할 수 있습니다.

참고
에이블디코딩학원- #19 깃(Git) - 브랜치 머지(merge)하기 - 3. conflict 해결하기

좋은 웹페이지 즐겨찾기