여기서 알 수 있는 것은 병합 충돌이 발생하면 자동으로 커밋이 생성되지 않는다는 것입니다. 충돌이 발생하면 깃은 충돌 메시지를 출력하고 병합 작업을 중단합니다.
이렇게 충돌이 발생하면 담당 개발자가 직접 수동으로 해결해야 합니다. 어떤 충돌 상태인지 알아보기 위해 깃 상태를 확인합니다.
infoh@DESKTOP MINGW64 /e/gitstudy08 (master|MERGING) 충돌 사항 표시
$ git status 상태 확인
On branch master
You have unmerged paths. 충돌 사항
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: index.htm
no changes added to commit (use "git add" and/or "git commit -a")
충돌 내용이 메시지로 출력됩니다. “Unmerged” 메시지를 확인할 수 있습니다. 깃 배시에도 master|MERGING으로 표시된 것을 확인할 수 있습니다. 현재 충돌된 병합을 해결해야 하는 상태라고 표시합니다.
사실 이러한 충돌은 버전 관리 시스템에서는 흔히 발생하는 문제입니다. 실제 사용하다 보면 깃 또한 충돌을 피할 수 없습니다. 하지만 피할 수 없더라도 예방은 가능합니다. 내부적으로 팀원 간 규칙을 정하고 상의하면서 개발을 진행하면 향후 발생할 충돌을 많이 줄일 수 있습니다. 다른 방안으로는 master 브랜치 내용을 자주 자신의 브랜치로 병합하는 것입니다. 자주 커밋하고 병합할수록 충돌이 발생할 기회는 적습니다. 많은 내용을 수정할수록 병합할 때 충돌이 발생하기 쉽습니다. 자신의 브랜치 상태가 최신일수록 향후 병합할 때 발생하는 충돌을 최소화할 수 있습니다.
방금 실행한 병합을 취소할 때는 --abort 옵션을 실행합니다.
infoh@hojin1 MINGW64 /e/gitstudy08 (master|MERGING)
$ git merge --abort 병합 명령 취소
infoh@hojin1 MINGW64 /e/gitstudy08 (master)