우리는 이제 “스테이징”브랜치를 가지고 있는데, 여기서 “스테이징”은 훨씬 더 의미 적으로 적합 해 보입니다. 이것을 처리하기위한 좋은 전략은 무엇입니까?
답변
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
답변
향후 독자 : 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 ‘).
답변
답변
“스테이징”이라는 새 브랜치를 만들고 다른 것을 잊어 버리십시오.
답변
이것은 기록을 수정하며 고급 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