자식 저장소에서 원본을 제거하는 방법


279

기본 질문 : 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-filtergit repo 사본 에서 여러 인스턴스화를 실행하는 것보다 더 효율적인지 확실하지 않지만 어쨌든 여전히 원점과의 링크를 끊고 싶습니다.

답변:


476

매우 간단합니다:

git remote rm origin

filter-branch질문에 관해서는 - --prune-empty필터 분기 명령에 추가 하면 결과 리포지토리에 실제로 변경 사항이 포함되지 않은 모든 개정이 제거됩니다.

git filter-branch --prune-empty --subdirectory-filter path/to/subtree HEAD

1
감사. 그것은이었다 --prune-empty내가 실종되었다.
awy

2
흠. 점점error: Could not remove config section 'remote.origin'
Dima Lituiev

5

기존 원점을 제거하고 새 원점을 프로젝트 디렉토리에 추가하십시오.

>$ 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.