참조: http://stackoverflow.com/questions/2219756/how-to-move-some-changeset-to-a-new-branch-in-mercurial


질문자:


현재 상황은

A -> B -> C -> D # default branch

이렇게 되어있는데, 이것을

A # default branch
 \-> B -> C -> D # some_new_branch

이런 구조로 바꾸고 싶다.

그런데 아직 새 브랜치가 없는 상태에서 새 브랜치를 만들어서 기존 커밋 내용을 옮기고 싶다.



가장 많이 추천을 받은 답변의 내용은 브랜치를 바꿀 B, C, D 커밋을 패치로 내보낸 다음에 새 브랜치를 만들어서 새 브랜치에서 패치를 가져오고 기존 브랜치에서는 B, C, D 커밋을 삭제하는 것.


1.

해당 디렉토리의 커맨드 창을 연다.


1-1. 이미 버전관리를 쓰는 사람이라면 개발자일테니 기본 터미널 열어서 디렉토리 이동하는 법은 설명하지 않는다.

1-2. TortoiseHg를 주로 이용하는 개발자라면 프로젝트 이름에서 오른쪽 클릭해서 Terminal 선택하면 손쉽게 선택 가능하다.


2. 

옮길 리비전을 patch로 내보낸다.

hg export -o patch B C D

(B C D에 들어갈 값은 리비전 번호를 쓰면 된다)


3.

브랜치가 갈라지는 곳으로 돌아간다.

hg update A


4.

새 브랜치를 생성한다.

hg branch branchname


5.

패치로 내보낸 리비전 내용을 새 브랜치로 가져온다.

hg import patch


+

새 브랜치로 옮긴 커밋 리비전들이 기존 브랜치에 남아있는 게 보기 싫다면 MQ를 이용해서 커밋 내용을 삭제하면 된다.


2015/02/17 - TortoiseHg 상에서 잘못된 커밋 삭제하기 이 게시물 참조


++ 원래 브랜치로 돌아오고 싶다면 다시

hg update A



그림으로 표현하면 대략 이런 과정이 되지 않을까 한다.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,

참조한 곳: http://stackoverflow.com/questions/5084915/how-do-you-delete-a-commit-in-mercurial


1. TortoiseHg 프로그램에서 메뉴 > File > Settings > Extensions 을 선택한다.


2. Extensions에서 mq 항목에 체크를 하고 TortoiseHg GUI를 다시 시작한다. (사실 체크하고 OK 누르면 알아서 재시작한다)


3. 지우고 싶은 commit 버전 위에서 오른쪽 클릭을 해서 ModifyHistory > Strip 선택하면 된다.


+ 아마 변경내용 버리기 위해서 discard 옵션을 선택해야 할 수도.


WRITTEN BY
Chaz
서울소재 모 대학교 공대 졸업하고 일개미가 된 일명 비둘기가 거주하는 곳입니다

,