GitHub에서 자신의 저장소를 어떻게 포크합니까?


164

GitHub에 공용 저장소가 있습니다. 그것을 복제 / 복사 하고이 저장소를 기반으로 새 프로젝트에서 작업하고 싶지만 현재 상황에 영향을 미치지 않습니다. GitHub UI를 사용하여 포크하려고했지만 아무것도하지 않았습니다.


4
정확히 무엇을 달성하려고합니까? 어쩌면 분기만으로 해결할 수 있습니까?
Artefact2

4
프로젝트의 사본을 가져 와서 원래 프로젝트에 영향을 미치지 않고 다른 작업을 수행하도록 해당 프로젝트를 확장하고 싶습니다. 그거였다. 어떤 방법 으로든 해결되었습니다.
WowBow

1
@ Artefact2 .. 죄송합니다. mcepl의 솔루션이 내 필요를 해결했다고 생각했지만, 그렇지 않았습니다. 'git clone'을 사용하여 프로젝트를 복제 한 후 원래 저장소를 가리 키지 않고 내가 만든 github의 새 저장소를 가리키고 싶습니다. 어떻게하면 되나요?
WowBow

1
@ Artefact2 질문이 있습니까?
WowBow

1
새 리포지토리를 만드는 것과 비교하여 포크의 이점은 그래프와 네트워크 기록이 서로 연결되어 있다는 것입니다. Github이 이것을 허용하지 않는 것은 유감입니다.
kenchew

답변:


205

나는 당신이 당신의 자신의 저장소를 포크 수 있다고 생각하지 않습니다.
그것을 복제하고 새로운 저장소로 푸시하는 것이 좋지만 다음을 수행해야합니다.

git clone https://github.com/userName/Repo New_Repo
cd New_Repo
git remote set-url origin https://github.com/userName/New_Repo
git remote add upstream https://github.com/userName/Repo
git push origin master
git push --all

(참조 git push)

" GitHub에서 자체 프로젝트 포크 "에 설명 된 모든 프로세스를 참조하십시오 .


6 년 후 (2016) 이제 GitHub 가져 오기 도구를 통해 GitHub를 포함한 다른 소스에서 리포지를 가져올 수 있습니다.
"을 참조하십시오 GitHub의 가져 오기와 저장소를 가져 오기 "

https://help.github.com/assets/images/help/importer/import-repository.png

narf답변 (공개)도 그 과정을 보여줍니다.

그러면 GitHub URL을 사용하여 새 저장소를 작성하고 이전 저장소의 전체 히스토리를 새 저장소로 가져올 수 있습니다.

다시 한 번 : 당신이 얻는 것은 실제 포크가 아닌 사본입니다. 새 저장소에서 이전 저장소로 끌어 오기 요청을 할 수 없습니다.

언급 한 바와 같이 다시 (비스)는 의견에 의해 mpersico,이은 하지 TRUE로 FORK.

다른 사람들이 포크하고 PR을 수행 할 수있는 오픈 소스 프로젝트의 정식 소스 저장소 인 foo가있는 경우 해당 저장소에서 작업하고 싶지 않은 경우 문제를 해결하는 데 사용할 수있는 포크를 원합니다 내 프로젝트에 대한 적절한 PR.
나는 이것을 GitHub에서 두 번째 계정을 만들어서 해결했다.


감사합니다 @VonC. 구성 파일 편집을 언급하는 것을 잊었다 고 생각합니다.
WowBow

1
.git / config에 대해 이야기하고있었습니다. 원산지 URL을 변경하지 않으면 "git remote add ...."라고 말하면 원산지 이름이 이미 존재하기 때문에 거부됩니다. 그러나 일단 설정 파일에서 URL을 변경하면 정상적으로 작동합니다. 당신이 나에게 지적한 기사는 그것을 보여줍니다.
WowBow

7
@WowBow가 remote이미 있으면 을 수행하십시오 git remote set-url origin https://github.com/userName/New_Repo. .git/config파일 이 변경됩니다 .
VonC

1
업스트림에서 가져 오려면 @aus가 필요합니다.
VonC

1
나는 여전히 같은 조직의 레포에서 포크가 허용되어야한다고 생각합니다. 모든 사람에게 공통적 인 중앙 저장소가 있고 항상 업데이트를 받고 동시에 필요에 따라 분기 사본을 변경하려면 어떻게해야합니까?
Prachi

107

GitHub 웹 사이트에서 30 초 안에 매우 쉬운 방법 :

  1. 리포지토리의 URL을 복사하십시오. 예 : https://github.com/YourName/YourOldRepo(힌트 : github에서 repo의 메인 페이지를 볼 때의 URL입니다.
  2. +오른쪽 상단에 있는 아이콘을 클릭하십시오 .
    https://i.stack.imgur.com/9zJgo.png
  3. "저장소 가져 오기"를 선택하십시오.
  4. "이전 URL"을 묻는 곳에 1 단계에서 복사 한 URL을 붙여 넣습니다.
    https://i.stack.imgur.com/vgWd3.png
  5. 새 저장소의 이름을 입력하고을 클릭하십시오 Begin Import.
  6. 그게 다야! 이제 모든 커밋 히스토리와 브랜치가 포함 된 전체 리포지토리 사본이 있습니다!

제한 사항 : 실제로는 실제 포크가 아닙니다. 레포의 사본입니다. 풀 요청을 앞뒤로 할 수 없습니다.


4
나는 2010 년 이전 답변에서 GitHub Importer (2016 년에 출시)를 잊었습니다. 해당 도구 및 답변에 대한 참조를 추가했습니다.
VonC



4

그것을 복제하고 새로운 빈 저장소를 만들고 밀어 넣으십시오.


1
감사. 너무 많이 생각하고있었습니다.
WowBow

로컬 컴퓨터에 복제하고 빈 저장소를 만들지 만 git origin github.com/userName/New_Repo.git .. git origin을 시도하면 원격 출처가 이미 존재합니다. 어떻게 해결해야합니까?
WowBow

그리고 지금 밀어 넣으면 원래 저장소가 변경됩니다.
WowBow 2016 년

새로운 레포지토리로가는 방법을 알려주세요. 복제본을 작성하고 새 저장소를 작성했지만 새 저장소로 푸시 할 수 없습니다.
WowBow

5
리모컨을 변경해야합니다. 그렇지 않으면 같은 위치로 밀려 고 시도합니다. git remote rm origin다음git remote add origin URL-to-new-repository
wadesworld

1

"리포지토리 복제"에 대한이 공식 지침을 따랐으며 작동하는 것 같습니다.

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

분기하지 않고 리포지토리의 복제본을 만들려면 원래 리포지토리에 대해 특수 복제 명령을 실행하고 새 복제본을 미러 푸시해야합니다. 이것은 GitHub에서 호스팅되는 저장소뿐만 아니라 모든 git 저장소와 작동합니다.


1

유감스럽게도 VonC의 수용 된 솔루션은 내가 얻었던대로 작동하지 않았습니다.

원격 : 저장소를 찾을 수 없습니다

일한 것은 다음과 같습니다.

  1. github에서 new_repo를 생성하십시오
  2. 자식 클론 new_repo
  3. cd new_repo
  4. git remote add upstream old_repo.git
  5. 자식 풀 업스트림 마스터
  6. 자식 푸시 원점 마스터

나는 여기 에서 위의 모든 것을 얻었다 .


1

GitHub를 사용하는 기술에 정통하지 않은 사용자를 위해 위의 다른 훌륭한 답변에 대한 대안으로 간단한 솔루션이 있습니다. 필요한 것은 GitHub Desktop 애플리케이션입니다.

  1. 브라우저에서 자신의 프로젝트 저장소를 열고 zip으로 다운로드하십시오 (예 :) your-project-master.zip.
  2. 압축을 풀고 새 저장소로 이름을 바꿉니다.
  3. GitHub Desktop을 열고 압축을 푼 로컬 경로의 새 저장소로 찾아 새 저장소를 추가하십시오. 여기에 이미지 설명을 입력하십시오
  4. 게시 버튼을 클릭하여 github에 게시하십시오. 이름과 설명을 추가하는 것을 잊지 마십시오 :)


-1

방금 이것을 시도해 보았습니다.

  1. 리포지토리를 조직 계정에 포크
  2. 이름을 바꿉니다
  3. 소유권을 자신에게 다시 이전

4
좋은 생각이지만 방금 시도했지만 오류가 발생했습니다 aspiers already has a repository in the UPSTREAM/NAME network.
Adam Spiers

이름을 바꾸거나 당신의 repos가 전송 후 그들은 지금 리디렉션이 때문입니다 github.com/blog/1508-repository-redirects-are-here
shadowbq

-1

새 리포지토리를 생성 할 때 리포지토리 .git url을 사용하여 다른 리포지토리에서 가져올 수 있습니다. 30 초가 걸렸습니다.

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