[git] 자식 저장소에서 원본을 제거하는 방법
기본 질문 : git repo를 복제 된 원점에서 어떻게 분리합니까?
git branch -a
보여줍니다 :
* master
remotes/origin/HEAD -> origin/master
원산지 및 관련 개정판을 모두 제거하고 싶습니다.
더 긴 질문 : 기존 서브 버전 저장소를 가져 와서 더 작은 git repos를 만들고 싶습니다. 새로운 git repos 각각은 관련 브랜치의 전체 히스토리를 가져야합니다. 다음을 사용하여 원하는 하위 트리로 리포지를 정리할 수 있습니다.
git filter-branch --subdirectory-filter path/to/subtree HEAD
그러나 결과 리포지토리에는 여전히 원본 / 마스터 분기 아래에 현재 폐기 된 하위 트리의 모든 개정이 포함됩니다.
나는 -T 플래그를 사용하여 git-svn에 서브 버전 저장소의 관련 하위 트리를 복제 할 수 있음을 알고 있습니다. 나중에 git filter-branch --subdirectory-filter
git repo 사본 에서 여러 인스턴스화를 실행하는 것보다 더 효율적인지 확실하지 않지만 어쨌든 여전히 원점과의 링크를 끊고 싶습니다.
답변
매우 간단합니다:
git remote rm origin
filter-branch
질문에 관해서는 – --prune-empty
필터 분기 명령에 추가 하면 결과 리포지토리에 실제로 변경 사항이 포함되지 않은 모든 개정이 제거됩니다.
git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD
답변
기존 원점을 제거하고 새 원점을 프로젝트 디렉토리에 추가하십시오.
>$ git remote show origin
>$ git remote rm origin
>$ git add .
>$ git commit -m "First commit"
>$ git remote add origin Copied_origin_url
>$ git remote show origin
>$ git push origin master