Git 브랜치를 자체 저장소로 옮기려면 어떻게해야합니까?


180

별도의 Git 리포지토리로 옮기고 싶은 지점이 있으며 프로세스에서 해당 지점의 기록을 유지하는 것이 이상적입니다. 지금까지 나는을보고 git filter-branch있었지만 내가하고 싶은 일을 할 수 있는지 여부를 알 수 없습니다.

Git 브랜치를 자체 저장소로 추출하는 방법은 무엇입니까?

답변:


280

브랜치를 새 저장소로 푸시하면됩니다. 그것의 모든 역사는 함께 갈 것입니다. 그런 다음 원래 저장소에서 분기를 삭제할지 여부를 선택할 수 있습니다.

예 :

git push url://to/new/repository.git branch-to-move:new-branch-name

새 저장소의 경우 일반적으로 new-branch-name이 마스터입니다.

를 사용하여 빈 저장소를 새로 만들 수 있습니다 git init.


15
누군가 궁금해하는 경우를 대비하여 URL을 Git 저장소 디렉토리의 경로로 대체했으며 완벽하게 작동했습니다.
Aupajo

48
새 저장소에서 지점 이름을 지정할 수도 있습니다. git push url://to/new/repository.git branch-to-move:new-branch-name
Yves Van Broekhoven

4
이브의 위의 의견은 정확합니다. 그렇지 않으면 거기에 마스터가 없으며 복제 프로세스가 완료 warning: remote HEAD refers to nonexistent ref, unable to checkout.됩니다. 이미 그 단계에 있다면, 그냥 가십시오. git checkout -b branch-to-move안전하거나 git checkout -b master마스터 지사를
가지러 가십시오

git checkout -b master화면에 있던 문제를 해결했습니다. error: src refspec master does not match any.(내가 있던 지점 이름을 보지 못한 이유 만 궁금합니다.) 감사합니다
kangkyu

2
이 답변이 당신에게 혼란 스러울 경우, 여기에 작동하게하기 위해 그것을 이해하는 방법은 다음과 같습니다. 1) 터미널에서 새 저장소로 만들고자하는 저장소와 지점이있는 디렉토리에 있어야합니다. 2) urlgit@github.com : brianzelip / groceries.git과 같은 git url이어야합니다. 3) branch-to-move현재 리포지토리의 새 리포지토리로 사용하려는 지점입니다. 4) new-branch-name작성중인 새 저장소에서 새 분기에 원하는 이름 master입니다. 예 : .
Brian Zelip

19

이렇게하면 모든 지점의 기록이 유지되지만 사본이 특히 한 지점을 가리키게합니다.

git clone -b newbranch CurrentRepo NewRepo

이것은 아무것도 '이동'하지 않고 단지 사본을 만듭니다.


2
clone -b새롭다는 점 은 주목할 가치가 있습니다. git> = 1.6.5 (2009 년 10 월 출시)가 필요합니다.
CB Bailey

이 작업을 수행하는 데 문제가 있었지만 Charles Bailey의 메시지를보기 전이었습니다.
Aupajo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.