병합 충돌
병합 충돌(Merge conflict)은 버전 관리 시스템에서 서로 다른 브랜치의 변경 사항을 병합할 때 같은 파일의 같은 위치가 서로 다르게 수정된 경우 발생하는 상황을 의미한다.
마커
충돌이 발생한 파일을 열면 현재 브랜치의 변경 사항과 병합 대상 브랜치의 변경 사항을 구분해서 표시하는 마커가 표시된다. 두 부분을 비교해서 어느 쪽을 유지할지 결정할 수 있다.
<<<<<<< HEAD
현재 브랜치의 변경 사항 (ours)
=======
병합 대상 브랜치의 변경 사항 (theirs)
>>>>>>> 대상 브랜치 이름 또는 커밋 해시
3-way 병합 도구를 사용하면 베이스 마커가 추가로 표시된다. 베이스는 두 브랜치가 분기되기 전의 내용을 표시한다.
<<<<<<< HEAD
현재 브랜치의 변경 사항 (ours)
||||||| 공통 조상의 커밋 해시
공통 조상의 내용 (base)
=======
병합 대상 브랜치의 변경 사항 (theirs)
>>>>>>> 대상 브랜치 이름 또는 커밋 해시
git-mergetool
네오빔을 병합 도구로 사용하려면 .gitconfig
파일에 다음과 같은 설정을 추가한다.
[merge]
tool = nvim
[mergetool "nvim"]
cmd = nvim -d $LOCAL $REMOTE $MERGED -c 'wincmd w' -c 'wincmd J'
충돌 파일을 다루기 위한 플러그인을 설치하면 더욱 편리하게 사용할 수 있다.
- https://github.com/akinsho/git-conflict.nvim
- https://github.com/rhysd/conflict-marker.vim
- https://github.com/tpope/vim-fugitive