수은 병합을 중단하는 방법은 무엇입니까?


85

나는 병합을 망쳤다. 되 돌린 후 다시 시도하고 싶습니다.
커밋되기 전에 병합을 되 돌리는 방법이 있습니까?

hg revert내가 원하는대로하지 않고 파일의 텍스트 만 되돌립니다. Mercurial은 두 번째 병합 시도를 중단하고 원래 병합이 아직 커밋되지 않았다고 불평합니다.

hg merge명령 후 커밋되기 전에 병합을 취소하는 방법이 있습니까?


답변:


106

hg update -C <one of the two merge changesets>


간단하고 효율적이며 최선의 방법이라고 생각합니다! : D
Eric-Karl

@JonL. -예, --clean은의 동의어입니다 -C. 어떤 변경 세트 .가 참조 할지는 확실하지 않지만 항상 두 개의 병합 된 변경 세트 중 하나입니다.
Omnifarious

3
@Omnifarious, 정리 .는 병합을 시작하기 전에 어떤 개정을 사용하든 정리 해야합니다. 그래서 만약 당신이 r42에 있었다면, r43과 병합을 시도하고, 실패하고, 치료했다면, 당신은 원래의 r42로 돌아올 것입니다.
Jon L.

2
hg update --clean.암시 적 기본값 인 것처럼 작동 하지만 명시 적으로 문서화되지 않았습니다 .
Joel Purra

@JoelPurra : .병합의 맥락에서 의 의미 는 다소 모호합니다.
Omnifarious

39

을 수행 한 후 hg merge이전 hg commit에는 작업 복사본에 두 개의 상위가 있습니다. 첫 번째 상위는 병합 전에 업데이트 한 변경 집합이고 두 번째 상위는 병합 할 변경 집합입니다. Mercurial은 hg merge귀하의 작업 카피에 두 명의 부모가있는 한 귀하 가 다시 는 할 수 없도록 합니다.

진행 방법에는 두 가지 옵션이 있습니다.

  1. 병합을 중단하고 시작한 위치로 돌아가려면 다음을 수행하십시오.

    hg update -C .
    

    이렇게하면 작업 복사본이 첫 번째 부모와 일치하도록 업데이트됩니다.는 .항상 작업 복사본의 첫 번째 부모를 나타냅니다.

  2. 일부 파일 을 다시 병합 하려면 다음을 수행하십시오.

    hg resolve fileA fileB
    

    이렇게하면했던 것처럼 병합 도구가 다시 시작됩니다 hg merge. resolve 명령은 hg merge병합 도구가 잘못 구성되었음을 발견 한 경우 유용 합니다 hg resolve --all. 구성을 수정하고 . hg resolve병합에 만족할 때까지 원하는만큼 실행할 수 있습니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.