2015-01-28 2 views
3

커밋을 수정하기 위해 hg commit --amend을 실행했지만, 이제 커밋을 수정하기 전에 커밋으로 되돌아 가고 싶습니다. 수정 전 커밋의 커밋 해시는 hg log에 나타나지 않습니다. 그러면 어떻게해야합니까?Mercurial : 개정 후 커밋을 되돌리는 방법

답변

1

commit --amend 명령은 .hg/strip-backup 디렉토리에 백업을 만듭니다.

그래서 당신이 지금해야 할 것은 <your-backup-name> 백업의 이름입니다

hg unbundle .hg/strip-backup/<your-backup-name> 

당신이 amend을 수행 할 때를 들었다 하나입니다 수행하는 것입니다.

원래의 변경 사항을 원래 루트에 다시 적용하면 더 이상 필요하지 않은 항목이 모두 strip이 될 수 있습니다.

+0

백업 이름은 어떻게 결정합니까? 나는'hg commit --amend' 명령을 실행할 때 그것을 봅니다. 그러나 명령의 출력을 기억하지 못하면 그것을 찾을 수있는 방법이 있습니까? – Robz

+0

글쎄, 그 디렉토리에있는 것을 확인하고 백업 시간과 'amdend' 명령 시간을 상관 시키려고 노력하십시오. – zerkms

+0

흠 좋습니다. 작동합니다. 나는 많은 북마크에 대해 많은 보상을한다 ... 더 좋은 방법은 없을까? – Robz

4

evolve extension을 활성화하면 "hg commit --amend"로 제거 된 변경 집합을 더 이상 덮어 쓰지 않습니다. 대신 진부화 마커로 숨겨져 있지만 일반 변경 집합으로보고 복원 할 수 있습니다.

숨겨진 변경 사항을 명령 줄에서 보려면 일반 명령에 --hidden을 추가하십시오. "hg glog - hidden -l 10". 거북이에서는 필터 도구 모음 (^ S)에 숨겨진 변경 집합을 표시하는 아이콘이 있습니다.

진화는 공식적인 수은의 일부가 아니지만 그렇게 될 예정입니다. [보시다시피, 거북이가 이미 지원합니다.] 나는 여러 해 동안 그것을 사용 해왔고 아주 잘 작동합니다. 더 이상 기억할 수없는 날짜로부터 애매한 이름이 붙은 오래된 번들을 찾으려고 노력하는 것보다 훨씬 쉬운 방법입니다. 전체 역사가 로컬 레포에 모두 있습니다.

+1

Newb 질문 : 사용하지 않는 변경 집합의 노드 ID 또는 변경 집합 번호가 있으면 어떻게 복원합니까? 나는. 어떻게 "쓸모 없게"표시합니까? – jacobsa

관련 문제