[Mercurial] 머큐리얼 상용-로컬 코드 합치는 법 (pull, merge 사용법)
Mercurial merge 방법에 대해서 알아보겠습니다.
로컬에서 제 작업을 하고 있는 상태입니다. 그리고 hg pull 명령어를 통해서 상용으로부터 최신 코드를 받았습니다.
로컬 커밋은 changeset 5:3ee4804이고 상용으로부터 최신 코드는 tip이라 상황을 가정하겠습니다.
로컬 커밋(5:3ee4804)을 최신 코드(7:7ca57c)로 머지를 시키고 싶은 상황입니다.
현재 위치를 5번을 이동시켜주세요.
그리고 7번으로 병합을 시켜주시면 됩니다.
hg up 5
hg merge -r 7:7ca57c169925
머지를 시켜주시고 나면 각종 충돌이 일어날겁니다. hg diff 명령어를 통해서 소스를 확인하고 소스들을 정리해주세요.
소스들을 정리하고 commit을 하면 다음과 같은 에러가 발생합니다.
abort: unresolved merge conflicts (see 'hg help resolve')
머큐리얼에서는 머지 이후 커밋을 하기 전에 resolve라는 명령어를 사용해서 병합을 잘 해결했다고 알려줍니다.
hg resolve -l 명령어를 통해서 머지 이후 변경된 파일 리스트를 보여줍니다.
리스트 앞에 U는 아직 해결이 안되었고 R은 해결된 파일을 표시해줍니다.
파일을 수정했다면 hg reolve -m [파일명] 명령어로 해결했다고 알려줍니다. (m옵션은 해결이 되었다는 옵션입니다)
마지막으로 커밋을 해주시면 완료 됩니다.
hg resolve -l
hg resolve -m hello.txt
hg commit -m "hello :)"
완료가 되었으니 병합된 모습을 보도록 하겠습니다.
git과 달리 브랜치라는 개념이 달라 조금 헷갈릴 수 있습니다.
연습을 한번 진행하고 병합을 진행해주세요.
감사합니다 :)