HG 병합을 포기하는 방법?


131

Mercurial과의 협력이 처음입니다. 내 상황 :

  • 다른 프로그래머가 파일의 rev 1을 변경하여 4 칸 들여 쓰기를 2 칸 들여 쓰기로 바꿨습니다. (즉, 모든 회선을 변경했습니다.) rev 2를 호출하여 원격 저장소로 밉니다.
  • 로컬 작업 공간에서 다양한 코드 변경 사항을 사용하여 실질적인 변경 사항 개정 1을 커밋했습니다. 레브 3을 부르십시오.
  • 나는 무슨 일이 일어나고 있는지에 대한 명확한 생각없이 hg pull에드와 hg mergeD를했습니다.
  • 갈등은 무수하고 실제로는 아닙니다.

따라서 병합하기 전에 로컬 리포지토리를 2 칸 들여 쓰기로 변경했으면합니다. 그런 다음 합병은 사소한 것입니다. 그러나 나는 백업 할 수없는 것 같습니다. 나는 필요하다고 생각 hg update -r 3하지만 말한다 abort: outstanding uncommitted merges.

병합을 취소하고 로컬 리포지토리의 간격을 변경 한 후 다시 병합하려면 어떻게해야합니까?

답변:


126

-C (또는 --clean) 플래그를 사용하여 커미트되지 않은 변경 사항을 버릴 수 있습니다.

hg update -C -r 3

주의 : 커밋되지 않은 모든 것은 사라질 것입니다!

그 후에는 일종의 코드 포맷터 도구를 사용하여 전체 작업을 수행하거나 적어도 일부는 정규식으로 찾아서 바꿔야합니다. 일치하는 항목 ^____(밑줄 대신 4 개의 공백 사용)을 __(2 개의 공백) 으로 바꾸는 것만 큼 간단하지만 몇 번 반복하면 (중간 적으로 중첩 된 코드가없는 한) 작동합니다.


오 감사. 내가 알아 냈을 때 당신은 바로 대답해야합니다. 나는 이맥스에 있고 M-x indent-region, 후회 트릭도 마찬가지였습니다.
Grumdrig

6
추적되지 않은 파일은 제거되지 않습니다.
djsutho

132

BTW : 병합을 되돌리고 3이 개정 번호가 아닌 경우 다음을 수행 할 수 있습니다.

hg update -C -r .

24
나와 같은 사람에게는 처음에는 이것이 어떻게 작동하는지 얻지 못했습니다. 점 .은 이전 개정의 바로 가기입니다.
Jeroen Wiert Pluimers

1
좋은 답변입니다! 최고야
Oleg Abrazhaev 2016 년

1
@Thymine : hg help update내가 얻는 것 : 변경 세트가 지정되지 않은 경우 현재 명명 된 브랜치의 팁으로 업데이트하십시오. 팁은 항상 현재 작업중인 버전이 아닐 수도 있습니다. 나는 지금까지 그것을 테스트하지 않았습니다.
수학 수학

1
... 사실은 내가 오프 떠나 주장 내 댓글을 삭제거야 알 수있는 좋은 세부입니다 아 -r .동일합니다
티민

간단하고 매우 도움이됩니다.
Naveen Kumar V

33

커밋되지 않은 병합을 취소하려면

hg update --clean

원본 병합 부모의 깨끗한 복사본을 확인하여 모든 변경 내용을 잃게됩니다.


2

나는 단지 내 필요에 hg update -C -r 3따라 rev를 사용하여 로컬 파일을 덮어 썼다 (이것은 내가 hg update할 것이라고 생각 했지만 잘못되었다.) 내 도움에 감사드립니다!


2
추가 -C하거나 --clean수정 한 파일을 버릴 경우에도 Mercurial에 계속 지시하는 방법입니다. 당신 맞아요 hg update -r X일반적으로 개정 X로 이동,하지만 당신은 병합에있을 때 당신이 좀 더 주장해야합니다 :-)
마틴 가이슬러

7
"hg revert --all --cancelmerge"가 훨씬 직관적이라고 생각합니다.
워렌 P
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.