sourcecode

GitHub: 공공 저장소의 포크를 비공개로 만드는 방법은 무엇입니까?

codebag 2023. 5. 13. 09:39
반응형

GitHub: 공공 저장소의 포크를 비공개로 만드는 방법은 무엇입니까?

공용 저장소를 포크로 지정하고 포크를 비공개로 설정하려면 어떻게 해야 합니까?개인 리포지토리를 지원하는 구독이 있습니다.

정답은 맞지만 공용 레포와 포크 사이에 코드를 동기화하는 방법은 언급하지 않았습니다.

전체 워크플로우는 다음과 같습니다(오픈 소스 React Native 이전에 수행한 바 있음).


먼저 다른 사용자가 말한 대로 레포를 복제합니다(자세한 내용은 여기 참조).

새 보고서 작성(예: 작성)private-repo)을(를) Github UI를 통해 제공합니다.그러면:

git clone --bare https://github.com/exampleuser/public-repo.git
cd public-repo.git
git push --mirror https://github.com/yourname/private-repo.git
cd ..
rm -rf public-repo.git

작업할 수 있도록 개인 저장소를 복제합니다.

git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master

대중의 평판에서 새로운 인기를 끌어내기 위해:

cd private-repo
git remote add public https://github.com/exampleuser/public-repo.git
git pull public master # Creates a merge commit
git push origin master

훌륭합니다. 이제 개인 보고서에 공개 보고서의 최신 코드와 변경 사항이 추가되었습니다.


마지막으로, private repo 요청을 작성하려면 -> public repo:

GitHub UI를 사용하여 공용 보고서의 포크(공용 보고서 페이지의 오른쪽 상단에 있는 작은 "포크" 버튼)를 만듭니다.그러면:

git clone https://github.com/yourname/the-fork.git
cd the-fork
git remote add private_repo_yourname https://github.com/yourname/private-repo.git
git checkout -b pull_request_yourname
git pull private_repo_yourname master
git push origin pull_request_yourname

이제 여기에 설명된 대로 Github UI를 통해 public-repo용 풀 요청을 만들 수 있습니다.

프로젝트 소유자가 끌어오기 요청을 검토한 후에는 요청을 병합할 수 있습니다.

물론 전체 프로세스가 반복될 수 있습니다(리모트를 추가하는 단계는 생략).

이제 옵션이 하나 더 있습니다(2015년 1월~2015년).

  1. 새 개인 보고서 만들기
  2. 빈 저장소 화면에는 "가져오기" 옵션/버튼이 있습니다.여기에 이미지 설명 입력
  3. 그것을 클릭하고 기존의 github repourl을 넣습니다. github 옵션에 대한 언급은 없지만 github repo에서도 작동합니다. 여기에 이미지 설명 입력
  4. 다 했어요.

현재 답변은 약간 구식이므로 명확하게 하기 위해 다음과 같이 설명합니다.

간단한 대답은 다음과 같습니다.

  1. 공개 보고서의 기본 복제를 수행합니다.
  2. 새 개인 파일을 만듭니다.
  3. 전용 미러 푸시를 수행합니다.

이것은 GitHub: 저장소 복제에 문서화되어 있습니다.

https://github.com/new/import 을 방문하시면 됩니다.

GitHub 가져오기

"의 복제본 "에서 "Repo URL"을 합니다.Private.

레포를 복제해야 합니다.

이 문서를 볼 수 있습니다(github에서).

포킹 없이 리포지토리의 복제본을 생성하려면 원래 리포지토리에 대해 특수 복제 명령을 실행하고 새 리포지토리에 미러 푸시해야 합니다.

다음과 같은 경우 사용자/새 저장소 예제 또는 사용자/미러링 예제와 같이 푸시하려는 리포지토리가 GitHub에 이미 있어야 합니다.자세한 내용은 "새 리포지토리 작성"을 참조하십시오.

리포지토리 미러링

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

명령줄을 열고 다음 명령을 입력합니다.

$ 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 clone --mirror https://github.com/exampleuser/repository-to-mirror.git
# Make a bare mirrored clone of the repository

$ cd repository-to-mirror.git
$ git remote set-url --push origin https://github.com/exampleuser/mirrored
# Set the push location to your mirror

베어 클론과 마찬가지로 미러링된 클론에는 모든 원격 분기 및 태그가 포함되지만 가져올 때마다 모든 로컬 참조가 덮어쓰므로 항상 원래 저장소와 동일합니다.푸시 URL을 설정하면 미러로의 푸시가 간소화됩니다.미러를 업데이트하려면 cron 작업을 실행하여 자동화할 수 있는 업데이트를 가져오고 푸시합니다.

$ git fetch -p origin
$ git push --mirror

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

GitHub에는 이제 새로운 가져온 리포지토리를 공개 또는 비공개로 선택할 수 있는 가져오기 옵션이 있습니다.

Github 리포지토리 가져오기

2021년 업데이트

저는 git가 처음이라 이클립스 GUI(v2020-12; EGit v5.11)에서 가능한 한 많은 작업을 하고 싶었습니다.아래 세부 정보.

---> 다른 답변의 가져오기 방법은 Subversion, Mercurial 또는 TFS 프로젝트에 대해서만 설계되었습니다.GitHub에서 git 프로젝트를 지원하지 않는다는 것을 직접 알게 되었습니다.효과가 있을 수도 있지만, 왜 위험을 감수해야 합니까?


리포지토리 및 GitHub 연결

eclipse/org.aspectj원래 공공 레포이고.upstream for fetching 격한가 위기▁for.
cb4/org.aspectj포크와 그origin
cb4/remPrivAJ원격 사설 레포와private
I:\local로컬 레포입니다.

github 인증을 위해, 나는 ed25519 키(이 SO 답변의 단계)와 함께 ssh를 사용하여 내 연결 URI를 다음과 같이 표시했습니다.ssh://git@github.com/<user>/<repo>.

표기법: -> 클릭 또는 항목입니다.right-> 오른쪽 클릭입니다.


단계

  1. 깃허브에서, 당신의 깃허브 계정으로 원본 공개 보고서를 포크하세요.
  2. github에서 빈 원격 개인 저장소 생성
  3. Eclipse Git Perspective에서 포크를 새 로컬 레포에 복제하고 구성합니다.
  • 3.1-> Clone a Git Repository and add clone to this view -> Clone URI -> Next
    • URI, 3.1.1 URI, Connection 및 Authentication 적 히 합 니 입 력 다 절 정보를▁as▁3▁appropri▁the▁authent▁connect다니합력입,icationate▁3▁info,에 입력합니다.-> Next
    • 만 선택했습니다) 3.1.2. 마선는 지택점선 (만터택스원하마선)-> Next
    • 3.1.3. 로컬 repo의 대상 디렉토리 입력
    • 지금 나중에 3.1.4. 프로젝트를 .-> Finish
  • 3.2. 원래 공용 보고서를 이름이 지정된 새 원격으로 구성합니다.upstream업데이트를 다운로드하기 위해
    • 3.2.1.right-> Remotes -> Create Remote ->이름을 입력합니다.upstream
    • 3.2.2.-> Configure fetch -> Create -> Change ->원래 저장소 URI 입력-> Finish
    • 3.2.3.-> Save and Fetch ->모든 분기가 다운로드되었습니다.-> Close
    • 3.2.4. 참고: 마스터 분기만 원했기 때문에 3.2.3단계 대신작업을 수행했습니다.
    • 3.2.5.-> Advanced아래Specifications to fetch해당 위치에 있는 유일한 항목 삭제
    • 3.2.6. 언더Add create/update specification -> Source ref: dropdown선택합니다.master [branch] -> +Add Spec -> Force Update
    • 3.2.7.-> Save specifications in upstream configuration -> Finish -> Save and Fetch ->마스터 분기만 다운로드됩니다.-> Close

  1. 원격 공용 보고서를 원격 개인 보고서로 복제하고 구성합니다.이것은 일식에서 할 수 없는 유일한 단계이기 때문에 저는 Windows용 Git를 설치하고 GitCMD를 사용했습니다.

이와 같은 경우:

git clone --bare git://github.com/eclipse/org.aspectj.git tmpRepo
<if prompted, enter ssh passphrase>
cd tmpRepo    
git push --mirror ssh://git@github.com:cb4/private.git
<if prompted, enter ssh passphrase>
cd ..    
rmdir tmpRepo /s /q

  1. 원격 개인 저장소를 이름이 지정된 새 원격으로 구성합니다.private밀어내기 위해
  • 5.1.right-> Remotes -> Create Remote ->이름을 입력합니다.private
  • 5.2.-> Configure push -> Create -> Change ->원격 개인 저장소 URI 입력-> Finish
  • 5.3.-> Advanced -> Add All Branches Spec -> Force Update -> Save specifications in origin configuration -> Finish
  • 5.4.-> Save and Push마스터 분기가 푸시됨-> Close

이 시점에서 공용 리포지토리를 개인 리포지토리로 포크했습니다.포크에 개인 변경사항을 적용한 다음 원래 공용 레포에 대해 꺼내기 요청을 여는 방법을 보려면 여기에서 내 대답을 참조하십시오.결과 구성은 다음과 같습니다.
설정

언급URL : https://stackoverflow.com/questions/10065526/github-how-to-make-a-fork-of-public-repository-private

반응형