여기에 명령에 컨닝 페이퍼는 다음과 같습니다
hg update
은 작업 카피의 상위 버전을 변경하고이 새 상위 버전에 맞게 파일 내용을 변경합니다. 즉, 새 커밋은 업데이트되는 개정에서 계속됩니다.
hg revert
은 파일 내용 만 변경하고 작업 사본 상위 버전 만 남겨 둡니다. 작업 복사본의 파일에 대해 커밋되지 않은 변경 사항을 유지하지 않으려는 경우 일반적으로 hg revert
을 사용합니다.
hg branch
은 새 명명 된 분기를 시작합니다. 명명 된 브랜치를 변경 세트에 할당 한 레이블로 생각하십시오. 따라서 hg branch red
을 수행하면 다음 변경 집합이 "빨간색"분기에 속하는 것으로 표시됩니다. 이것은 특히 다른 사람들이 다른 브랜치에서 작업 할 때 변경 집합을 구성하는 좋은 방법 일 수 있으며 나중에 변경 집합의 원래 위치를보고 싶을 수 있습니다. 그러나 당신은 당신의 상황에서 그것을 사용하고 싶지 않습니다. 당신이 hg update --rev 38
를 사용하는 경우
은 다음 39-45은 막 다른 골목으로 남아있을 것입니다 체인지 - 매달려 머리를 우리가 부르는. 푸시 할 저장소에 "다중 헤드"를 생성 할 것이므로 푸시 할 때 경고 메시지가 나타납니다. 누군가가 합병을해야한다고 제안하기 때문에 그러한 머리를 남겨 두는 것은 무례한 일이므로 경고가 거기에 있습니다. 그러나 당신이 정말로 걸기를 원하기 때문에 당신의 경우에 당신은 그냥 가서 hg push --force
을 할 수 있습니다.
다른 버전으로 개정판 39-45를 아직 푸시하지 않은 경우 비공개로 유지할 수 있습니다. 매우 간단합니다 : hg clone --rev 38 foo foo-38
을 사용하면 리비전 38까지만 포함하는 새로운 로컬 복제본을 얻을 수 있습니다. foo-38
에서 계속 작업하고 새로 작성한 (좋음) 변경 세트를 푸시 할 수 있습니다. foo
복제본에는 여전히 오래된 (나쁜) 수정 버전이 있습니다. 원하는 복제본의 이름을 자유롭게 지정할 수 있습니다 (예 : foo
~ foo-bad
및 foo-38
~ foo
).)
마지막으로, 당신은 또한 hg revert --all --rev 38
를 사용하고 커밋합니다. 이것은 리비전 38와 동일하게 보이는 리비전 46을 만듭니다. 리비전 46에서 작업을 계속할 것입니다. 이것은 hg update
과 동일한 명시적인 방법으로 히스토리에 포크를 작성하지 않지만 다른 한편으로는 불평하지 않을 것입니다. 여러 개의 머리를 가지고있다. 리비전 45를 기반으로 자신의 작업을 이미 만든 다른 사람들과 협력하고 있다면 hg revert
을 사용할 것입니다. 그렇지 않으면 hg update
이 더 명백합니다.
관심있는 사람은 관련 사이드 바에 올라가서 되돌리기 대 업데이트에 대한 좋은 설명이 있습니다. http://stackoverflow.com/questions/2506803/difference-between-revert-and-update-in-mercurial – Paolo