2010-02-17 1 views
4

은 내가 롤백하고 싶습니다 내 수은 프로젝트에서 파일을 변경했다,하지만 난 그것에 이후 발생한 일부 변경 유지하고 싶습니다 : 나는 다시 ONLY을 롤백 할 수어떻게 Mercurial에서 단일 변경 사항을 롤백 할 수 있습니까?

Revision 1: Original 
Revision 2: A change I made in error 
Revision 3: A change I want to keep 

을 Revision 2의 변경 사항을 적용하고 1과 3은 그대로두고 새 개정판을 작성하십시오. 4. 가장 "Mercurial"방식은 무엇입니까?

예, 리비전 2의 역방향 diff를 추출하여 작업 복사본에 패치로 적용하고 커밋 할 수 있습니다. 알아. 그러나이 도구가 직접 지원하는 몇 가지 방법을 찾고 싶습니다.

답변

5

프로젝트의 변경 내역을 보면 (모든 버전을 볼 수 있도록) 단일 버전을 선택하고 취소 명령을 사용하여 취소 할 수 있다고 생각합니다.

(나는이를 확인하기 위해 손에 아무것도하지 않기 때문에이 올바르지 않을 수 있습니다.)

+0

환상적. 고맙습니다. 분명히 간과했습니다. –

1

당신은뿐만 아니라 당신의 최근 역사를 편집 할 MQ 패치를 사용할 수 있습니다. 다음의 명령 순서는 트릭을 할 것입니다 :

 
hg qinit    # initialises a queue 
hg qimport -r2:TIP  # moves revisions from 2 onwards into patch management 
hg qpop -a    # unapplies patches, leaving your actual checkout at r1 
hg qrm 2.diff   # deletes the r2 patch (forever) 
hg qpush -a   # applies all remaining patches again (i.e. the r3 patch) 
hg qfinish -a   # moves applied patches back into official repository history 

것은 이런 종류의 로컬 저장소에 실수를 고정 매우 중요하지만, 역사을 변경 있어 이후, 당신이 밀어하지 않았다 확인 당신이 그것을 고치기 전에 원래 버전을 다른 사람에게 (또는 그들이 당신을 끌어 당기지 않았다면).

정확하게 이해하면 hg backout은 이전 변경 사항을 취소하여 기록 변경을 유지하는 새 패치를 적용합니다. 더 안전한 옵션이지만 로컬 실수 (예 : 나 같은)를 자주하면 좋지 않습니다.