2010-04-25 6 views
19

저는 hg 프로젝트에서 약간의 실험 작업을하고 싶습니다. 그래서 지점을 만들고 싶습니다. 그리고 실험이 효과가 있다면, 그것을 다시 메인 브랜치에 병합 할 수 있습니다.HG의 지점에서 개발하는 방법은 무엇입니까?

자식, 나는 내가 A Guide to Branching in Mercurial을 읽은

$ git branch experimental 
$ git checkout experimental 
(edit file) 
$ git commit -a 
$ git checkout master 

할 수 있습니다. 그것은 hg branch feature라고 말했다. 그러나 다음은 무엇입니까? 나는 따라 가지 않는다.

답변

24
$ hg branch experimental 

(edit file) 
$ hg commit 
$ hg update default 
+0

'hg branch experimental'을하기 전에 hg가 'default'로 변경 한 사항을 모두 커밋해야합니까? – michael

+1

예 - 보류중인 변경 사항을 기본 분기로 이동한다고 가정합니다. 그렇지 않으면, 보류중인 변경 사항은 "experimental"이라는 브랜치로 연결되며, 거기에 커밋 할 수 있습니다. – sblom

+0

"hg merge experimental"을해야합니다. 여기서 다시 기본값으로 다시 업데이트해야합니다. – jacobbaer

8

큰 기능이 아닌 경우 (즉, 분기에 이름이 없어도 됨) 매우 간단합니다.

리포지토리가 changeset X에 있다고 가정 해 봅시다. 원하는만큼 많이 작업하고, 커밋하고, 커밋하고, 결과에 만족하면 계속 진행할 것임을 알고있는 것처럼 계속 진행하십시오. ;) 만족스럽지 않다면 hg update X을 실행하고 거기에서 개발을 계속하십시오. 실험에서했던 모든 작업은 익명의 지점이됩니다.

이상하게도, appears은 Git이 익명의 브랜치로 작업하는 방식을 제공하지 않기 때문에 혼동을 줄 수 있습니다.

+1

또한 Mercurial 설명서, 특히 hg 위키에서 약간의 부정확하고 잠재적으로이 영역에서 혼란 스럽습니다. 여러분이'익명의 브랜치 '라고 부르는 것은 머큐리얼이'머리 '라고 부르는 것입니다. '머리'는 자식이없는 변경 집합입니다. 변경 집합은 항상 하나의 명명 된 분기에만 속합니다. 그 이름은'default' 인 기본 브랜치 일 수 있습니다. 명명 된 가지에는 항상 적어도 하나의'머리'가 있지만 더 많은 것을 가질 수 있습니다. 'hg update X'와 커밋을하면, X가 속한 지명 된 브랜치에 새로운 헤드를 만들지 만, 헤드는 hg의'branch' 센스의 브랜치가 아닙니다. –

+1

당신이 옳은 것인지 확신하지 못합니다. Mercurial은 분기의 리프 리비전을 머리로 부르고 명시 적으로 이름이 지정되지 않은 "익명 브랜치"브랜치를 호출합니다. "named branch"가 보통 많은 익명의 브랜치로 구성되어 있다는 사실은 누구나 쉽게 이해할 수는 없지만 그것이 작동하는 방법입니다 ... –

+1

현재'hg' man 페이지는 결정적으로 가장 가까운 것입니다 주제에 대한 단어이며 hg 소스에서 "익명 분기"라는 용어가 사용되는 유일한 장소입니다.맨 페이지 용어집은 "branch head", "repository head"및 "topological head"와 "named branch"대 "anonymous branch"대 "topological branch"를 구별하려고합니다. 용어의 과부하로 인해 정확성을 설명하는 것이 분명하고 혼란 스러울 수 있습니다. 다행히도 대부분의 경우별로 중요하지 않습니다. –

20

첫 번째주의 사항은 git branch입니다.hg branch입니다. hg branch으로 생성 된 분기는 영속적이며 전역 이름 공간에 살지만 git branch으로 만든 분기는 일시적입니다. git branch의 가장 가까운 동등 물은 hg bookmark입니다. 북마크의 이름을 변경하고 삭제하고 Git 브랜치처럼 행동 할 수 있습니다.

최근에 나는 guide for Mercurial bookmarks으로 작성했습니다. 이것을 named branch guide과 비교하십시오. 두 가이드 모두 개발 과정을 추적하기 위해 Mercurial에서 (명명 된) 분기를 사용하는 방법에 대한 작업 예제를 포함합니다. 완료 후 브랜치를 병합하는 방법과 닫는 방법 또는 책갈피를 삭제하는 방법을 보여줍니다.

+0

익명의 브랜치 (Tomislav가 지적한 바와 같이)를 인식하는 것이 유용하지만, 명명 된 브랜치를 유용하게 처리 할 수 ​​있습니다. –

+1

+1 @MartinGeisler. 귀하의 지점 산책은 훌륭합니다. – klabranche

+0

-1 : 링크가 깨졌습니다. 수정하면이 게시물을 +1 할 것입니다. –

관련 문제