답변:
stiging
지점으로 업데이트 하고 새 지점을 만듭니다. 그런 다음 이전 지점을 닫으십시오.
요약해서 말하자면:
hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch
--force
. 예를 들면 다음과 같습니다 hg branch --force v3
.. 원하는대로 hg update v3
새 v3
분기 로 업데이트됩니다 .
stiging
분기하기 전에, 당신은 "느슨한 끝"하지 않습니다
향후 독자 : rebase
확장 기능을 사용하면 다음 과 같이 동일한 상위를 사용하여 새 분기를 만들고 stiging
전체 분기 기록을 해당 분기로 옮길 수 있습니다.
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
이것은 stiging
하나의 부모 만 있다고 가정합니다 . 물론 명시적인 개정 번호를 대신 사용할 수 있습니다.
분기하는 경우 : 1 참고 stiging
다른 분기와 병합을 포함, 내가 생각하는 만큼,이 그들을 보존하는 것 staging
과 stiging
같은 부모가 있습니다. 그러나 나는 확실히 두 번 확인했다.
참고 2 :이 작업은 기록을 편집하므로 이전 브랜치는 복제 된 리포지토리에서 사라지지 않습니다 ( rebase
문서 참조 ). 모든 사람이 새로 복제 할 수 없다면 대규모 그룹에게는 그다지 실용적인 해결책이 아닐 수도 있습니다.
참고 3 / 편집 (@JasonRCoombs 제공) : 이제 단계 가 수은 표준 rebase
이므로 이미 푸시 된 변경 세트를 수정하지 않습니다. 단계를 다시 초안 (으로 변경)으로 변경 hg phases
하거나 이전 지점을 원래 위치에 그대로 두거나 적절하게 이름이 지정된 사본을 만듭니다 (예 :`hg rebase --keep ').
hg convert
. 대신 사용하는 것이 좋습니다 .
--keep
rebase 명령을 전달 하면 변경 사항을 이동하는 대신 복사됩니다.
abort: can't rebase immutable changeset 11b1e2b7dc4f
. 변경 지점을 다른 지점에서이 지점으로 접목했습니다. 게다가, 그것은 분할 및 병합 무료입니다.
.
당신을 위해 --dest
가치와 REBASE가 자동으로 새 지점 이름에 걸립니다.
이것은 기록을 수정하며 고급 Mercurial 사용자만을위한 것입니다. 그게 무슨 뜻인지 모르면하지 마십시오.
스테이징이 로컬 전용 인 경우, graft 및 strip 조합으로 스테이징으로 변경할 수 있습니다 . 스테이징이 발생한 조상 체인지 셋으로 업데이트합니다. 스테이징 브랜치를 작성하고 스테이징에서 스테이징으로 각 커미트를 접목하십시오. 스테이징은 이제 스테이징 사본이어야합니다. 마지막으로, 첫 번째 커밋을 제거하여 stiging을 제거하십시오.
hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch
hg graft {first changeset in stiging}..{stiging head}