porcelain Git 명령 만 사용하여 분리 된 마스터 브랜치를 생성 할 수 있습니다 .
git init
touch GO_AWAY
git add GO_AWAY
git commit -m "GO AWAY - this branch is detached from reality"
그것은 우리에게 무례한 메시지를 가진 마스터 브랜치를 제공 합니다 (더 예의 바르기를 원할 수 있습니다). 이제 우리는 "실제"브랜치를 만들고 ( SVN을 기리기 위해 트렁크 라고합시다 ) master 와 이혼합니다 .
git checkout -b trunk
git rm GO_AWAY
git commit --amend --allow-empty -m "initial commit on detached trunk"
이봐, 프레스토! gitk --all 은 마스터 와 트렁크 사이에 링크없이 표시 됩니다.
여기서 "마법"은 --amend 가 git commit 이 현재 HEAD와 동일한 부모로 새 커밋을 생성 한 다음 HEAD가이를 가리 키도록한다는 것입니다. 그러나 현재 HEAD에는 저장소의 초기 커밋이므로 부모가 없으므로 새 HEAD도 하나를 얻지 못하여 서로 분리됩니다.
refs / heads / master가 여전히 가리 키기 때문에 이전 HEAD 커밋은 git-gc에 의해 삭제되지 않습니다 .
--allow-빈 우리가 빈 트리를 투입하고 있기 때문에 플래그는 필요하다. 몇 가지가 있다면 자식 추가 애프터의 자식 RM 다음은 필요하지 않을 것입니다.
실제로 저장소에서 초기 커밋을 분기하고, 트리를 삭제하고, 분리 된 트리를 추가 한 다음 git commit --amend 를 수행하여 언제든지 분리 된 분기를 만들 수 있습니다 .
나는 이것이 원격 저장소에서 기본 브랜치를 수정하는 방법에 대한 질문에 대한 대답이 아니라는 것을 알고 있지만 분리 된 브랜치를 만드는 방법에 대한 명확한 답변을 제공합니다.