2010-12-16 8 views
6

나는 수은을 사용하는 프로젝트에서 일하고 있는데, 모든 집중적 인 목적을 위해 죽은 수많은 헤드를 가지고 혼란에 빠지게됩니다.변경하지 않고 클로즈드 헤드

나는이 머리를 죽이고 커밋 그래프를 한 줄로 되돌리고 싶다.

브랜치를 병합하는 방법이 있지만 동시에 파일 변경 사항을 무시하므로 기본적으로 트리를 병합하지만 명령 집합을 해결할 수는 없다고 들었습니다.

이 작업을 수행하는 방법이 있습니까? 병합을 수행하고 파일 변경 사항을 무시하여 분기를 제거 할 수 있습니까? 또는 변경하지 않고 그래프를 다시 가져올 수있는 방법이 있습니까 (프로젝트에서 크게 관련이 없음).

답변

3

나는 이것이 당신이 찾고있는 단지 무엇을 생각 : Keep My or Their files when doing a merge

그것은 그 변경 사항에 복용하여 w/o "다른"머리를 폐쇄 새로운 병합 변경 집합을 만듭니다. 선형 역사로 끝나지는 않겠지 만 단일 헤드로 끝나게됩니다.

다른 열등한 답변은 원하지 않는 머리/익명 - 분기를 제거하기 위해 hg strip 또는 hg clone -r을 사용합니다. 그들은 (a) 다른 클론이 존재한다면 그것을 제거 할 수없고 전혀 작동하지 않으며 (b) 좋은 버전 제어 연습과 반대되는 역사를 버리게되기 때문에 열등합니다. 심지어 생각하지도 않습니다. 당신은 지금 언젠가는 소중 할 지 모릅니다.

+1

전혀 열등하다고 생각하지 않습니다. 사실 병합 제거를 권장하지 않습니다. 병합 된 행이 제거 된 분기를 기반으로하는 것으로 기록 그래프가 잘못 표시됩니다. 나중에 지회가 필요할 기회가 있으면 지키거나 그렇지 않으면 지울 수 있습니다. 동료에게 리포지토리를 스트라이프/리 클론하도록 알려주십시오. 스트립 핑의 협업과 관련된 함축적 의미를 이해한다면 사용하는 것이 좋습니다. 그럼에도 불구하고 공용 유선형 (즉, 박탈 된) 저장소와 내부 * 막 다른 길 * 저장소를 유지 관리 할 수 ​​있으며, 더 이상 필요하지 않은 지점 (아마도 확실하지는 않음)이 더 이상 필요하지 않습니다. –

5

TortoiseHg와 명명 된 분기를 사용하는 경우 커밋 대화 상자에서 분기 옵션을 선택하여 분기를 닫으면 실제 파일을 변경하지 않고 커밋 할 수 있습니다.

머리가 계속 남아 있지만 비활성으로 표시됩니다.

+2

그것이 내가하는 방법입니다. 그 명령 행은'hg commit --close-branch'입니다. – barjak

+0

머리말을 그대로 두면서 (실제로 원한다면 나중에 그 머리를 다시 열어 그 머리를 다시 열 수 있습니다) 무시합니다. 그것은 대부분의 작업 (예 :'hg heads ', 더 중요한 것은'hg merge')의 머리로 사용됩니다. 'hg push '는 여전히 --force를 사용할 것을 요구합니다. – Matt

+0

이 작업은 ... 명명 된 분기에 적용됩니다. 하지만 내 작업의 대부분은 익명의 nheaded hydra입니다. –

관련 문제