X와 Y라는 이름의 두 가지 브랜치가 있습니다. X는 이전에 생성되었고, y는 최신 브랜치입니다. 이제 나는 지점 'Y'에 있으며 일부 파일을 수정했습니다. 내가 수정 한 파일을 커밋해야하고 'Y'분기 대신 'X'분기의 변경 내용을 커밋해야합니다. Mercury Hg 또는 Tortoise Hg로 어떻게이 작업을 수행 할 수 있습니까? (어떻게 '의 x'를 지점으로 전환하고 변경 사항을 커밋하기?) 나는 그런 작업 선반 사용하십시오Tortoise Hg를 사용하여 지점을 전환하는 방법은 무엇입니까?
답변
: https://tortoisehg.bitbucket.io/manual/2.9/shelve.html
당신이 'Y'지점에있는 동안, 선반에 대한 모든 변경 사항을 넣어. 그런 다음 'X'지점으로 전환하고 선반에서 변경 사항을 복원하십시오.
당신은
- 는
- 그런 다음 X 지점에 이식/무덤이
- 그런
으로는 당신이 최선을 다하고 같이있어 결과 Y 분기에서 변경 집합을 제거 Y 지점에 커밋 수 Y 대신 X로 변경하십시오.
변경 사항을 커밋하지 않은 경우 다음 :
hg update X
hg commit
파일 내의 동일한 위치에서 동일한 파일 중 일부를 변경하지 않은 경우에는 충분해야합니다. 그럴 경우 hg update X
명령이 실패해야합니다. 이 시점에서 몇 가지 옵션이 있습니다.
머큐리얼 대기열 (mq)을 사용할 수 있습니다.
당신은 패치 큐에 현재의 변화를 넣을 수 있습니다 :
hg qnew stufftomove -e
는 당신은 당신이 커밋 메시지를 작성하는 데 사용하는 어떤 편집기가 표시됩니다. 계속해서 최종 메시지를 작성하십시오. 궁극적으로 커밋 될 때 원하는 메시지를 입력하십시오. -e를 사용하지 않으면 커밋 메시지가없는 패치 큐가 생성됩니다. 나중에 원하면 hg qrefresh -e
을 사용하여 커밋 메시지를 만들 수 있습니다.
hg qpop
가 이제 X 지점으로 이동 : 패치 큐가 생성
후, 그것을 떨어져 팝업
hg update X
지금에 패치 대기열을 누릅니다.
hg qpush
이 중 하나를 깨끗하게에 갈 수있다, 또는 병합 충돌이 않은 경우, 당신은 파일이 생성 된 어 .rej 메시지를 얻을 것이다 :이 패치 파일을 적용합니다. 그것들은 자동으로 적용 할 수 없었던 변화의 부분을 보여줍니다. 당신이 어 .rej 파일이있는 경우
, 수동으로 작동하지 않았다 조각을 적용한 다음 실행 HG qrefresh
이 새로운 변화에 패치 파일을 업데이트합니다.
당신이 원하는 무엇을, 당신이 진짜에 패치 큐가 귀하의 파일 변경 이제 당신이 그들가되고 싶은 지점에 최선을 다하고해야
hg qfinish stufftomove
와 커밋 변환 할 수 있습니다처럼 모든 것이 보이는 경우. 이미 원격 저장소 (또는 그들을 뽑아 한) 잘못된 분기에 변경 사항을 커밋하고 변경 사항을 밀어하지 않은 경우
은 또는, 당신은이 작업을 수행 할 수 있습니다
hg qimport -r <revision to import>
을이 시점에서, hg qpop
으로 시작하는 위의 지침을 계속 수행하십시오.
파일 및 분기의 상태에 대해 더 자세히 설명 할 수 있으면 좀 더 구체적으로 설명 할 수 있습니다. 어쨌든, 나는 이것이 도움이되기를 바랍니다.
사이드 노트 : (위의 단계에서 충돌을 병합하고, 당신은 당신이 좋아하는 병합 도구의 충돌을 해결 할 수 hg rebase
을 사용할 수 있습니다 어 .rej 파일을 처리 싫어 가지고있는 경우에 또는 당신이 구성한 도구는 무엇이든). 희망이 도움이됩니다.
토폴로지 개념 (병렬 개발 흐름) 또는 Mercurial의 명명 된 분기의 채색 의미에서 "분기"를 의미합니까? – Face