2010-06-23 4 views
13

언제 update vs merge를 사용합니까? 원격 저장소에서 풀 (pull)을 한 경우, 변경 사항을 작업 디렉토리로 가져 오려면 업데이트를해야한다는 것을 알고 있습니다. 하지만 다른 사람들은 내가 병합해야한다는 것을 읽고 있습니다.Mercurial - 업데이트 사용시기

아마도 끌어 오기 후에 항상 업데이트를 수행하고 충돌이있는 경우에만 병합을 수행하려고할까요?

여기서는 무엇을 이해하지 못하겠습니까?

답변

16

로컬 커밋이있는 경우 병합하십시오. 커밋되지 않은 로컬 수정이있는 경우 : 업데이트 (병합)

일반적으로 커밋을 로컬로 만들 때 끌어 올 때 트리를 분기합니다. 이 경우 항상 병합 (또는 리베이스 확장으로 리베이스)해야합니다. 커밋되지 않은 로컬 수정이있는 경우 가져 왔을 때 변경 사항을 업데이트하여 작업 영역에 병합 할 수 있습니다.

+2

기술적 인면에서는 올바르지 만 커밋되지 않은 (더티) 작업 디렉토리로 가져오고 업데이트하면 수은의 이점이 많이 상실된다는 것을 이해하십시오. 의미있는 변경 사항이있는 경우 먼저 컨텍스트를 손상시키지 않도록 병합하고 병합 작업을 중단 할 수 있습니다. – codekaizen

14
  • hg update는 (여전히 같은 의미) 지정된 개정 작업 디렉토리를 재설정하지 않습니다 주어진 개정보다
  • HG 병합을 같은 작업 디렉토리를 만드는 방법에 대한,하지만 다른 버전의 변경 사항을 병합합니다 현재 작업 디렉토리에 복사하십시오.

그래서 풀 후, HG 업데이트는 변화 작업 디렉토리는 저장소에 들어갔습니다 것을 반영하는 것입니다.
그러나 hg merge는 작업 디렉토리를 재설정하지 않고 작업 디렉토리와 가져온 디렉토리 사이의 변경 사항 만 병합합니다.

hg pull -u은 로컬 변경 사항을 가져와 업데이트하거나 병합을 거부하거나 덮어 쓸 것입니다. 풀은 당신의 repo에 새로운 HEAD를 추가하는 경우

  • , 당신은 풀 당신의 repo에 새로운 HEAD를 추가하지 않는 경우
 
added 1 changesets with 1 changes to 1 files (+1 heads) 
(run 'hg heads' to see heads, 'hg merge' to merge) 
  • 을 병합해야합니다, 간단한 업데이트는 충분하다
관련 문제