2010-07-23 3 views
12

제 동료가 잘못된 지점에서 저장소를 두 번 저지했습니다.잘못된 분기에 적용된 Mercurial에서 일부 커밋을 제거한 다음 올바른 분기에서 재생할 수 있습니까?

두 가지 커밋을 수행하고이를 제거하고 올바른 분기에서 올바르게 커밋하는 가장 효과적인 방법은 무엇입니까? (변경 사항이 푸시되지 않았습니다.)

TortoiseHG에서이 작업을 수행하는 것이 가장 이상적이지만 이상적인 옵션 인 경우 명령 줄을 사용합니다.

+0

: http://stackoverflow.com/questions/2963250/how-to-remove-accidental-branch-in-tortoisehg/2974657#2974657 – VonC

답변

6

내가 발견 한 바에 따르면, 이식은 사용할 수있는 최상의 확장 프로그램입니다. 원하는 다른 개정판에 changset을 적용합니다.

http://mercurial.aragost.com/kick-start/tasks.html#transplanting-changes

내 문제에 대한 해결책은, 두 개의 변경 사항이 적용되어 있어야 분기 업데이트에서 두 변경 집합을 이식 한 후 변경 사항을 제거하기 위해 MQ를 사용하는 것이 었습니다. 모두가 tortoiseg 내에서 할 수 있습니다.

14

Mercurial Queues (mq) 확장 프로그램이 도움이 될 수 있습니다.

은 다음과 같습니다 변경 이력을 감안할 때 :

@ changeset: 3:9dc681b56325 
| summary:  file4 
| 
o changeset: 2:6675b3f86aa7 
| summary:  file3 
| 
| o changeset: 1:4a3209ed5b2f 
|/ summary:  file2 
| 
o changeset: 0:6ab45ac3bd6d 
    summary:  file1 

이동 다른 지점 위에 'file4'변경 집합합니다 ('파일 2'헤드) 파일을 다음 명령 :

hg qimport -r 3  // convert revision 3 to a patch 
hg qpop    // remove it 
hg update 1   // switch to the other branch head 
hg qpush   // push the change back 
hg qfin -a   // convert the applied patch back to a changeset 

결과 :

@ changeset: 3:3faa754edb0b 
| summary:  file4 
| 
| o changeset: 2:6675b3f86aa7 
| | summary:  file3 
| | 
o | changeset: 1:4a3209ed5b2f 
|/ summary:  file2 
| 
o changeset: 0:6ab45ac3bd6d 
    summary:  file1 

지금 부모님. 최신 버전의 TortoiseHg는 MQ 확장을 지원합니다.

관련 문제