두 브랜치가 같은 파일의 같은 줄을 수정하면, Git은 자동으로 병합할 수 없어서 여러분에게 판단을 요청해요. 충돌 해결은 처음엔 무서워도 두 번째엔 훨씬 덜 무서워요.
충돌이 생기는 방법
상상해봐요 : main에서 README.md 1번째 줄이 "안녕하세요"예요. my-feature 브랜치에서 그걸 "반갑습니다"로 바꿨어요. 그 사이 누군가 main에서 "어서오세요"로 바꿨어요. Git은 어느 쪽을 유지해야 할지 몰라요.
merge를 실행하면 :
Git이 멈추면서 메시지가 나와요 : CONFLICT (content): Merge conflict in README.md.
충돌 마커 읽기
충돌 파일을 열면 이런 게 보여요 :
<<<<<<< HEAD
어서오세요
=======
반갑습니다
>>>>>>> my-feature<<<<<<< HEAD: 충돌 블록의 시작, 현재 브랜치 버전 (여기서는main).=======: 두 버전 사이의 구분자.>>>>>>> my-feature: 블록 끝, 들어오는 브랜치의 버전.
충돌 해결하기
파일을 직접 편집해서 원하는 것을 남겨요. 세 개의 마커를 모두 삭제하고 최종 버전을 써요 :
안녕하세요, 어서오세요또는 두 버전 중 하나만 남기거나, 완전히 다른 것을 써도 돼요. 여러분이 결정해요.
해결 마무리하기
충돌 파일을 모두 편집했으면, stage하고 commit해요 :
Git이 자동으로 merge commit 메시지를 생성해요. 수락하거나 수정할 수 있어요.
아직 충돌 중인 파일이 있는지 언제든지 확인하려면 :
충돌 파일은 "both modified" 아래에 나타나요. 남아 있는 한 merge는 완료되지 않아요.
진행 중인 merge 중단하기
접근 방식이 잘못됐다고 느껴서 모두 취소하고 싶다면 :
Git이 merge 전의 정확한 상태를 복원해요. 아무것도 잃지 않아요.
git-scm.com - git merge관련
참고 · ide꼭 있어야 할 확장 기능들
