나의 지식 보관소
Git 충돌(conflict) / vscode를 병합(merge)도구로 사용하기 본문
Git 충돌 발생
3-way merge가 실패하는 경우 즉, 병합하는 두 브랜치에서 같은 파일의 같은 부분이 동시에 수정이 일어났을 때 병합을 시도하면 Git은 해당 부분을 병합하지 못하고 충돌을 발생시킨다. 이러한 충돌이 발생하면 개발자가 대신 해결할 때까지 병합할 수 없다.
자 그럼 이제 연습을 위해 일부러 충돌을 일으켜보자. 여기서 사용되는 브랜치와 파일 내용은 아래와 같고, branchA와 branchB를 병합할 것 이다.
브랜치 | 텍스트 파일 내용 |
master |
aaa bbb ccc |
branchA |
aaa 111 ccc |
branchB |
aaa 222 ccc |
branchA와 branchB모두 master브랜치를 기반으로 두고 있고, 두 브랜치 모두 두 번째줄을 수정했으니, 두번째 줄에서 충돌이 일어날 것이다.
충돌 해결
Git이 어떤 파일을 병합할 수 없는지 알아보기 위해선 $ git status 명령을 사용하면 된다.
그러면 충돌이 일어난 파일은 unmerged 상태로 표시된다.
이제 충돌이 일어난 파일을 수정해주어야 하는데 merge의 과정을 더 쉽게 해주는 여러 툴들이 있다. 나는 그중 vscode를 병합 도구로써 사용할 것이다. (솔직하게 말해서 어떤 mergetool이 더 낫다 이런 건 잘 몰라서 그냥 익숙한 거 사용하려고 골랐다.)
vscode를 병합 도구로서 사용하기로 결정했으니 이제 git config에 등록해주면 된다. 하는 방법은 여기서 참고했다.
요약하자면 git에서 $ git config --global -e 명령을 사용한 후에 아래 텍스트를 추가해주면 된다.
[merge]
tool = vscode
[mergetool "vscode"]
cmd = code --wait $MERGED
[diff]
tool = vscode
[difftool "vscode"]
cmd = code --wait --diff $LOCAL $REMOTE
그 후 충돌이 발생했을 때 $ git mergetool 명령을 실행하면 아래 사진과 같이 vscode가 병합을 도와주게 된다.
'Git' 카테고리의 다른 글
Git Remote Branches ( 리모트 브랜치 ) (0) | 2020.05.03 |
---|---|
Git 브랜치 관리 (0) | 2020.04.30 |
3-way merge (0) | 2020.04.27 |
Git Merge(병합) (0) | 2020.04.26 |
Git 브랜치 (0) | 2020.04.26 |