오늘 자식 문제가있는 친구를 돕는 동안 나는 지점과 완전히 분리되어야하는 지점을 소개해야했습니다 master
. 이 브랜치의 내용은 실제로 브랜치에서 개발 된 것과 다른 기원을 master
가졌지 만 master
나중에 브랜치 로 병합 될 것 입니다.
나는 John Wiegley 's Git을 아래에서 시작하여 브랜치가 본질적으로 특정 규칙을 따르는 커밋에 대한 레이블과 커밋이 파일 트리 및 선택적으로 부모 커밋에 연결되는 방식을 나타내는 레이블을 기억했습니다. 우리는 git의 배관을 사용하여 기존 저장소에 부모없는 커밋을 만들었습니다.
그래서 우리는 색인의 모든 파일을 제거했습니다 ...
$ git rm -rf .
... tarball에서 추출 된 디렉토리와 파일을 색인에 추가했습니다 ...
$ git add .
... 트리 객체를 생성했습니다 ...
$ git write-tree
( git-write-tree
생성 된 트리 객체의 sha1sum을 알려줍니다.)
그런 다음 부모 커밋을 지정하지 않고 트리를 커밋했습니다 ...
$ echo "Imported project foo" | git commit-tree $TREE
( git-commit-tree
우리에게 커밋 생성 된 객체의 sha1sum 말했다.)
... 그리고 새로 만든 커밋을 가리키는 새 브랜치를 만들었습니다.
$ git update-ref refs/heads/other-branch $COMMIT
마지막으로 master
지점으로 돌아와 작업을 계속했습니다.
$ git checkout -f master
이것은 계획대로 작동 한 것 같습니다. 그러나 이것은 분명히 git을 사용하기 시작한 사람에게 가볍게 추천하기 위해 권장하는 종류의 절차가 아닙니다. 지금까지 저장소에서 발생한 모든 것과 전혀 관련이없는 새 브랜치를 작성하는 더 쉬운 방법이 있습니까?