IT이야기

Hg에서 한 지점으로만 푸시하는 방법

cyworld 2021. 4. 22. 21:14
반응형

Hg에서 한 지점으로 만 푸시하는 방법은 무엇입니까?


3 개의 브랜치가있는 Hg 리포지토리가 있지만 그중 2 개는 비활성 상태입니다 (이미 기본 브랜치에 병합했기 때문에). hg 헤드 는 각 분기에 대해 하나씩 3 개의 헤드를 표시하지만 hg 분기 는 해당 분기 중 2 개를 '비활성'으로 표시합니다.

기본 브랜치 를 다른 리포지토리 로 푸시하려고하면 ( hg push --branch default http : // ... 사용 ) 병합이 중단되고 "abort : push creates new remote branch :!"메시지가 표시됩니다.

Hg 푸시 매뉴얼 페이지에서 "기본적으로 푸시는 대상에 새 헤드를 생성 할 수 없습니다. 헤드가 여러 개이면 사용할 헤드가 명확하지 않기 때문입니다.이 상황에서는 푸시하기 전에 당겨서 병합하는 것이 좋습니다."

나는 이미 그것을했지만 중단되지 않고 --branch default를 여전히 푸시 할 수 없습니다.

도움을 주시면 감사하겠습니다. 감사!


default변경 세트가 다른 브랜치의 상위 변경 세트를 가지고있는 경우 해당 변경 세트도 푸시해야합니다. 변경 세트가 모두 존재하지 않으면 리포지토리에 변경 세트가 존재할 수 없습니다.

그래서 시도해보십시오.

hg push --branch default --new-branch

"예,이 푸시가 이전에 원격 저장소에서 본 적이없는 브랜치 이름을 통해 전송된다는 것을 알고 있습니다."(Mercurial 1.6 이상 IIRC도 필요함)>

또한 비활성 헤드를 다음과 같이 폐쇄 헤드로 만들 수 있습니다.

hg update thebranch
hg commit --close-branch -m 'closing'

"이름이 지정된 분기는 영원합니다"때문에 많은 사람들이 "안정적인"및 "실험적"과 같은 오래 지속되는 개념을 위해 예약하고 기능, 릴리스 및 기타 일시적인 것에 대해 책갈피, 익명 분기 또는 복제를 사용하기로 선택합니다. 다른 옵션에 대한 가이드이것을 참조하십시오 .


단일 분기를 푸시하려면 -b를 사용하십시오.

hg push -b myBranch

특정 문제에 관해서는 폐쇄 분기를 살펴볼 수 있습니다. SourceTree가 제공하는 것을 알고 있지만 세부 사항은 확실하지 않습니다.


당신은 그것을 강요 할 수 있습니다!

방법은 다음과 같습니다.

1. Pull from your repository
2. hg push --rev nnn -f (replace nnn with your Rev # of your working branch)
3. do NOT force before PULLing. if you do things will get out sync and you are screwed

RhodeCode와 같은 것을 사용하는 경우 강제 한 후 확인하면 최신 브랜치가 있음을 알 수 있습니다.

그러나 나중에 Mercurial에서 다른 브랜치를 다시 푸시하도록 요청할 것이라고 생각합니다. 닫아도 Mercurial은 서버에서 해당 브랜치를 생성하려고합니다.

저도 Git 사용자이며 고객이 Mercurial을 사용하고 있지만 Git 워크 플로 스타일을 사용하고 싶어서 같은 상황에 직면했습니다.

나는 그것이 가능하다고 생각하지만 아직 100 %를 파악하지 못했습니다.

참조 URL : https://stackoverflow.com/questions/4880322/how-to-only-push-to-one-branch-in-hg

반응형