2013-04-17 4 views
9

hg qnew에 패치에 대한 변경 사항이 포함되어 있음을 알지 못하고 발행했습니다. 나는 그것을 되돌리고 hg qrecord을 사용하여 구체적인 변경 사항 만 고르고 싶습니다. qnew을 어떻게 실행 취소 할 수 있습니까? 당신이 알고있는 경우"hg qnew"를 실행 취소하는 방법은 무엇입니까?

hg qpop 
hg import --no-commit .hg/patches/patch-name 
hg qdelete patch-name 

는, 더 나은 방법을 추가하십시오 :

답변

12
당신의 대답은 확실히 작동

- 새로운 의욕의로 가져 오기 단계 일을 방지하기 위해 hg strip --keep를 사용할 수 있습니다

$ hg strip --keep . 
$ hg qdelete patch-name 

--keep 플래그는 작업 할 때 strip이 작업 복사본을 무시하게 만듭니다. 즉, hg qpop처럼 커밋을 삭제하지만 파일에 대한 변경 사항을 실행 취소하지는 않습니다. . 스트리핑을 한 후에도 시리즈의 패치가 적용됩니다 (적용되지 않음). 그러면 패치를 삭제할 수 있습니다. 그냥 최신 qnew 유지 모든 로컬 변경 사항을 취소하려면

2

나는 anwer here을 발견했습니다.

는 업데이트

: 또 다른 방법 알도의 답변에 따라이 :

hg qnew test 
# We can undo the above qnew as: 
hg qrefresh -X '*' 
hg qpop -f 
hg qdelete test 
2

은 하나의 옵션은 다음과 같습니다 단지 임의의 문자열입니다

qcrefresh 123 
hg qpop -f 
hg qdelete <name of the patch> 

공지 사항 123 것을 : 당신은 단지 포함 (희망 nonexistsnt에 수은 말하고있다) 123 현재 패치에있는 파일. 최신 버전의 Mercurial 문제가 발생하면 123 파일이 존재하지 않는다는 경고가 나오지만 정확하게 여기에 해당 파일이 있습니다.

현재 경로의 일부 변경 사항을 유지하려면 crecordextensionqcrefresh 명령을 사용하면 현재 패치에 포함될 변경 사항을 그래픽 방식으로 선택할 수 있습니다. 당신은의 Bitbucket에서 그것을 download 아카이브를 추출하고 .hgrc에서이를 구성해야합니다

[extensions] 
crecord = <path/to/crecord/package> 
+0

이 확장은 매우 유망한 것, 그리고 darcs 사용자로 나는 대화 형으로 변화를 선택하는이 방법을 좋아한다. 그러나 그것은 내 질문에 답하지 않습니다. 이미 일어난'qnew '를 취소해야했습니다. –

+0

질문을 잘 이해했다면 실제로'qnew' 명령을 취소 할 필요가 없습니다.'qcrefresh' 명령을 직접 사용하여 포함되지 않은 변경 사항을 제외 할 수 있습니다. 제외 된 변경 사항은 로컬 변경 사항으로 남아 있으므로'qcrefresh' 이후에'qnew'를 사용하여 새로운 패치에 모두 포함 시키거나'qcrecord'를 사용하여 그 중 일부만 선택할 수 있습니다. – Aldo

+0

아마 확장 기능을 올바르게 사용하는 방법을 모르겠다. 수정 된 저장소에서'hg qnew'로 시작하는 일련의 명령을 추가 할 수 있습니까? 마치'qnew'가 호출되지 않은 것처럼 끝나는가? 이전에'qrefresh'를 사용하여이 작업을 시도했지만 (대화 형이 아닌 'qcrefresh'와 동일한 작업을 수행합니다), 성공하지 못했습니다. –

관련 문제