반응형

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과 달리 브랜치라는 개념이 달라 조금 헷갈릴 수 있습니다.

연습을 한번 진행하고 병합을 진행해주세요.

감사합니다 :)

반응형

+ Recent posts