2010-04-03 3 views
95

저는 Mercurial과 공동 작업을 처음했습니다. 내 상황 :hg 병합을 포기하는 방법?

  • 또 다른 프로그래머는 4- 공백 들여 쓰기를 2- 공백 들여 쓰기로 바꾸기 위해 파일의 1 회전을 변경했습니다. (즉, 모든 라인이 바뀌 었습니다.) rev 2를 호출하여 원격 저장소로 푸시합니다.
  • 저는 로컬 작업 공간에서 다양한 코드 변경으로 실질적인 변경 사항 1을 적용했습니다. 그 전화를 rev 3
  • hg pull ed와 hg merge d 무슨 일이 있었는지에 대한 명확한 생각없이.
  • 충돌은 무수하며 실제로 중요하지 않습니다.

그래서 병합하기 전에 내 로컬 저장소를 2 칸 들여 쓰기로 변경했으면 좋겠습니다. 합병은 사소한 일이 될 것입니다 (저는 가정합니다). 하지만 나는 백업 할 수없는 것 같습니다. 나는 hg update -r 3가 필요하다고 생각하지만 그것은 abort: outstanding uncommitted merges라고 말합니다.

병합을 실행 취소하고 로컬 저장소에서 간격을 변경하고 다시 병합 할 수 있습니까? 조심

hg update -C -r 3 

을 :

답변

97

당신은 -C (또는 --clean) 플래그 커밋되지 않은 변경 사항을 취소 할 수 있습니다 최선을 다하고되지 않은 모든 것은 사라질 것입니다!

그런 다음 전체 형식 작업을 수행하기 위해 일종의 코드 포맷터 도구를 사용하거나 정규식을 찾아서 바꿔야합니다. 어떤 문자를 (2 공백)으로 바꾸고 (몇 가지 중첩 된 코드를 사용하지 않는 한) 몇 시간을 반복하면 ^____ (밑줄 대신 4 공백 사용)과 같은 간단한 작업이 효과적입니다.

+0

오 - 감사합니다. 내가 너 자신을 알아 냈을 때 너는 그 말이 맞았을거야. 나는 이맥스에있어'M-x indent-region'이 다시 속임수를 사용했다. – Grumdrig

+4

추적 할 수없는 파일은 삭제되지 않는다는 점에 유의하십시오. – djsutho

1

분명히 hg update -C -r 3이 필요합니다. 내 로컬 파일을 마음에 들었습니다 (이는 hg update이 생각한 것입니다.)하지만 도움이되었습니다.

+2

'-C' 또는'--clean'을 추가하면 수정 된 파일을 버릴 때도 Mercurial이 진행하도록 지시하는 방법입니다. 당신은'hg update -r X'가 일반적으로 리비전 X로 가게 될 것입니다. 그러나 머지에서 당신은 조금 더 주장해야합니다 :-) –

+7

"hg revert --all --cancelmerge "훨씬 더 직관적 일 것입니다. –

98

BTW : 당신은 단지 당신이 한 병합을 되돌리고 3이 개정 번호가 아닌 경우이 작업을 수행 할 수 있습니다,

hg update -C -r . 
+16

나를 좋아하는 사람은 처음에는 어떻게 작동하는지 알지 못했습니다. 점 '.'은 이전 버전의 바로 가기입니다. –

+1

대단한 답변입니다! –

+1

@Thymine :'hg help update '에서 얻을 수있는 것은 : * 어떤 changeset도 지정되어 있지 않다면, 현재 지명 된 브랜치의 팁으로 업데이트하십시오. * 그리고 팁이 당신이 작업하고있는 현재 리비전이 아닐 수도 있습니다. 나는 그것을 시험하지 않았다, 지금까지. – math

17

이 커밋 병합을 취소하려면 사용 확인합니다

hg update --clean 

원래의 병합 부모의 깨끗한 사본을 내고, 모든 변경 사항을 잃어 버린다.

관련 문제