2010-06-21 5 views
3

분명히 오해의 소지가있는 제목이지만, 더 잘 표현할 수있는 방법을 몰랐습니다.어떻게 "더 많은 지점을 나눌 수 있습니까?"

그래서 지점을 열기 전에 모든 프로젝트의 특정 변경 사항을 푸는 실수를했습니다. 그렇게하면 기본 분기에 속한 일부 변경 집합이 해당 분기에 속하지 않습니다. 그들은 새로 열린 지사에 있어야합니다.

모든 변경 집합을 먼저 제거한 다음 다시 올바른 분기로 밀어 넣어야합니까? 심지어 작동합니까?

도움 주셔서 감사합니다.

답변

6

EditingHistory에 의존하지 않고 (일반적으로 다시 한 번 권고되며, 수은 같은 "변경 불가능한 기록"디자인 목표와 확실히 반대 함) 이러한 변경 사항은 기록에 영원히 남습니다. 그러나 'tip'개정에서 취소 한 다음 여러 분기에 걸쳐있는 여러 후속 변경 세트에서 다시 되돌릴 수 있습니다.

이의 상상하자이 현재의 역사 :

수정 R2와 R3는 기본 분기에 원하는 물건과 다른 지점에 있었다 할 몇 가지 물건을 가지고
[R0] -> [R1] -> [R2] -> [R3] 

. R2와 R3을 실행 취소하는 새 개정 R4를 작성할 수 있습니다. 그것은 당신이 제안한대로 백 아웃을 사용하거나 여러 변경 집합을 수행하고 있기 때문에 가능합니다. 아마도 '되돌리기'를 사용하는 것이 더 쉽습니다.

hg update tip ; hg revert --all -r R2 ; hg commit -m 'undid changes R2 and R3' 

다음 역사는 다음과 같이 표시됩니다

[R0] -> [R1] -> [R2] -> [R3] -> [R4] -> [R5] -> [R7] 
            \ 
            --> [R6] -> [R8] 
:

[R0] -> [R1] -> [R2] -> [R3] -> [R4] 

는이 같은 역사를 산출, 당신은 당신이 처음 일 것하고자하는 변경 집합으로 작업을 분할 할 수 있습니다

R6 및 R8은 'default'또는 다른 명명 된 분기의 분기에있을 수 있습니다. 어느 쪽이든, 당신은 수행하여 R5 및 R7을 통해 단지 R0를 밀어 수 있습니다

푸시가 개정을 밀어 조상의 모든 때문에 작동
hg push -r R7 

-하지만 R6와 R8는 R7의 조상되지 않으므로 그들이 어떤 지점에 있더라도 밀리지 않을 것입니다.

관련 문제