git 저장소를 복제하는 방법은 무엇입니까? (포킹없이)


117

두 개의 저장소가 있고 첫 번째 저장소와 다른 액세스 수준을 가진 다른 빈 저장소에 하나를 모두 복사해야합니다. 복사본과 어머니 저장소는 함께 연결되어서는 안됩니다.

나는 git을 처음 접했고 누군가가 나를 도울 수 있다면 멋질 것입니다.


5
확실하지는 않지만 복제 한 다음 git config remote.origin.url git : //new.url/proj.git을 사용하여 remote.origin을 새 담당자로 설정할 수 있습니다.
Rufinus 2011-07-07

ya 방금 게시 한 링크가 그런 일을합니다.
nbz 2011

@rudinus 내가 그랬어. 감사.
cowboybebop 2011-07-07

답변:


205

참조 https://help.github.com/articles/duplicating-a-repository를

짧은 버전 :

정확히 복제하려면 베어 클론과 미러 푸시를 모두 수행해야합니다.

mkdir foo; cd foo 
# move to a scratch dir

git clone --bare https://github.com/exampleuser/old-repository.git
# Make a bare clone of the repository

cd old-repository.git
git push --mirror https://github.com/exampleuser/new-repository.git
# Mirror-push to the new repository

cd ..
rm -rf old-repository.git  
# Remove our temporary local repository

참고 : 위의 내용은 모든 원격 git repo에서 잘 작동하며 지침은 github에만 국한되지 않습니다.

위의 내용은 저장소의 새 원격 복사본을 만듭니다. 그런 다음 작업중인 컴퓨터에 복제합니다.


2
이전 저장소와 새 저장소의 이름이 같은 경우 (동일한 git URL이 아님) 어떻게됩니까? 나는 단지 클론에서와 마찬가지로 Jeremy.git다른에Jeremy.git
gran_profaci

이것은 정확히 중복되지 않습니다. 문제는 전송되지 않습니다.
Slam

이것이 역사를 보존합니까?
Thomas

@Thomas 방금이 작업을 수행했으며 예, 사본의 모든 역사를 보존했습니다. 새의 repo에 밀어 CD 후 원격으로 밀어했기 때문에 당신이 풀 할 필요가 있으므로, 아무것도, 여전히이 없다는 것을 참고
PfunnyGuy

7
이 답변이 GitHub에서 작동하려면 먼저 GitHub에 새 저장소를 만들어야합니다.
Alex Holcombe

22

git-copy를 사용할 수도 있습니다 .

Gem과 함께 설치하고,

gem install git-copy

그때

git copy https://github.com/exampleuser/old-repository.git \
    https://github.com/exampleuser/new-repository.git

1
처음에 gem을 어떻게 설치합니까? 이것은 가장 번거롭지 않은 솔루션처럼 보입니다. 찬성!
saran3h

일반적으로 Ruby 설치의 일부입니다. 우분투에서는 sudo apt install ruby.

9

GitHub에 복사하는 경우 GitHub Importer 를 사용하여 이를 수행 할 수 있습니다. 원래 repo는 다른 버전 제어 시스템에서도 가능합니다.


4
이 완벽하게 작동하고 심지어 역사를 유지 - 높은 upvoted한다
존 D

1
나는 동의한다. 이 접근 방식은 훨씬 더 직관적이며 Github GUI 내에서 전적으로 수행 할 수 있으며 혼란스러운 명령 줄 말도 안되는 내용을 포함하지 않습니다. 단계 : 1) GUI에서 새 저장소를 만들고 "README를 사용하여이 저장소 초기화"확인란을 클릭하지 마십시오.이 작업을 수행하면 Github에서 새 페이지와 "... 또는 다음에서 코드 가져 오기 옵션을 제공합니다. 다른 저장소. " 그게 다야!
Luke F.

5

기존 파일의 전부 또는 대부분을 사용하여 새 저장소를 만들고 싶다면 (즉, 일종의 템플릿으로) 가장 쉬운 방법은 원하는 이름 등으로 새 저장소를 만들고 다음 위치에 복제하는 것입니다. 바탕 화면에 원하는 파일과 폴더를 추가하기 만하면됩니다.

모든 기록 등을 얻지는 못하지만이 경우에는 원하지 않을 것입니다.


-1

터미널을 엽니 다.

저장소의 베어 복제본을 만듭니다.

git clone --bare https://github.com/exampleuser/old-repository.git

Mirror-push to the new repository.

cd old-repository.git

git push --mirror https://github.com/exampleuser/new-repository.git


나는 당신의 접근 방식을 시도했습니다. 그리고이 오류 메시지가 나타납니다.! [원격 거부 됨] 마스터-> 마스터 (사전 수신 후크 거부 됨) 및 기타 유사한 메시지. 마지막 오류 : 오류 : 일부 참조를 푸시하지 못했습니다. 어떻게 수정할 수 있습니까?
LND
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.