Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

나의 지식 보관소

Git 충돌(conflict) / vscode를 병합(merge)도구로 사용하기 본문

Git

Git 충돌(conflict) / vscode를 병합(merge)도구로 사용하기

야식은진리다 2020. 4. 29. 15:19

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