GitHub에 공개 저장소의 비공개 브랜치가 있나요?


127

GitHub 저장소에 하나의 브랜치 (마스터) 만 포함 된 공개 PHP 프로젝트가 있습니다.

나에게 비공개 인 별도의 분기 / 포크를 갖고 싶습니다 (비공개 GitHub 리포지토리 비용을 지불했습니다). 개인 브랜치 / 포크의 변경 사항을 공용 리포지토리로 병합하고 그 반대의 경우도 마찬가지입니다.

이를 염두에두고 내 질문은 다음과 같습니다.

  1. 공용 저장소에 개인 브랜치를 가질 수 있습니까?
  2. 내 공개 저장소를 내 비공개 브랜치 / 포크로 포크 할 수 있습니까?
  3. 위의 두 가지가 모두 가능하다면 가장 좋은 방법은 무엇입니까? 둘 다 없다면 어떻게 진행해야합니까?

1
퍼블릭 리포지토리를 퍼블릭 리포지토리로 푸시 (백)하지 않는 여러 브랜치를 만드는 프라이빗 리포지토리로 포크하는 것이 가장 좋은 생각이 아닙니까?
Legolas 2011

1
그게 내가 요청하는 것입니다. 공개 리포지토리의 사본을 만들 수 있지만 업데이트는 비공개로하고 싶습니다 (특정 항목을 공개
Lizard


@assylias, 대답으로 넣을 수 있습니까? 제 의견으로는 이것이 가장 좋은 답변이며, 제가 직접 기사를 찾기 전에 귀하의 의견에주의를 기울이지 않았습니다.
mbh86

@ mbh86 그것은 실제로 대답이 아니며 링크이기 때문에 대답으로 바꿀 시간이 없습니다. 그러나 해당 페이지의 콘텐츠를 사용하여 여기 (원래 사이트 참조)에 대한 답변을 작성하려면 다른 사용자에게 확실히 도움이 될 수 있으며 내
찬성 투표를

답변:


69
  1. 저장소를 복제하십시오 .
  2. 복제 된 저장소를 GitHub에서 비공개 저장소로 만듭니다.
  3. 개인 저장소를 머신에 복제
  4. 공용 저장소에 원격 추가 (git remote add public git@github.com : ...)
  5. 퍼블릭 리포지토리를위한 커밋이있는 브랜치를 새 퍼블릭 리모트로 푸시합니다. (실수로 개인 전용 코드를 커밋하지 않았는지 확인하십시오)
  6. 'git fetch public'을 사용하여 공개 리포지토리에 변경 사항을 가져온 다음 로컬로 병합하고 개인 리포지토리 (원격 원격)로 푸시 할 수 있습니다.

복제는 저에게 잘 작동하지만 반대 순서로해야했지만 먼저 개인 리포지토리를 만든 다음 명령 줄에서 공용 리포지토리를 복제했습니다. 감사!
Joel

104

퍼블릭 리포지토리에 프라이빗 브랜치를 가질 수 있습니까?

GitHub에서 저장소는 공개 또는 비공개입니다. 브랜치를 선택적으로 "개인화"할 수는 없습니다.

내 공개 저장소를 내 비공개 브랜치 / 포크로 포크 할 수 있습니까?

필요에 따라, 로컬 컴퓨터에 지점을 공개 REPO를 복제하고, 단순히 "개인"지점은 상류 밀어 수 없습니다 (지정하여 어떤 : 푸시에 지점 원점 git push origin master또는 git push origin branch-i-want-to-be-public:master).

가장 좋은 방법은 무엇이며 어떻게 진행해야합니까?

공개 및 비공개 개발 모두에 GitHub를 활용하려면 GitHub 내에서 공개 브랜치를 포크하고 새 포크의 설정을 "비공개"로 변경 한 다음 비공개 버전을 로컬 머신으로 복제하는 것이 좋습니다. 변경 사항을 공개 할 준비가되면 모든 것을 GitHub의 비공개 포크로 푸시 한 다음 풀 요청 을 사용 하여 브랜치를 공개 리포지토리에 선택적으로 복사합니다.

GitHub에서 저장소를 비공개로 설정하려면 업그레이드 된 (유료) 계정이 있어야합니다. 무료 계정 만 사용하는 경우 개인 저장소 없이도 내가 제안한 첫 번째 프로세스 ( 공용을 로컬 시스템에 복제, 분기, 특정 "공용"분기를 원본으로 푸시)를 사용할 수 있습니다.

유료 GitHub 계정이 있거나 퍼블릭 및 프라이빗 포크와 풀 요청 (예 : BitBucket ) 을 제공하는 다른 서비스를 사용하는 경우 위의 접근 방식 중 하나를 사용하여 코드를 공개 할 수 있습니다.


32
GitHub에서는 공용 저장소의 포크를 비공개로 만들 수 없습니다. 리포지토리를 개인용으로 만들려면 복제해야하며 공용 리포지토리에 대한 연결이 끊어집니다. 공용 저장소를 개인 저장소의 로컬 복제본에 별도의 원격으로 추가 할 수 있는지 궁금합니다. 그런 다음 분기를 해당 리모컨으로 푸시합니다.
mj1531

3
안타깝게도 풀 리퀘스트를 사용하여 개인 "포크"에서 리포지토리의 공용 복사본으로 변경 사항을 풀링 할 수 없다는 의미입니다.
Michael Mior

6
GitHub는 이제 무료 계정에 무제한 개인 저장소를 제공합니다.
Nathan F.

1
권장 워크 플로 (프라이빗 포크에서 PR)가 작동하지 않는다는 점을 감안할 때 이것은 실제로 최고의 답변이 아니어야합니다. @ mj1531의 대답은 더 나은 워크 플로우입니다.
stewSquared

2

동일한 시스템에서 중복 리포지토리를 생성하지 않기 때문에 더 나은 또 다른 솔루션이 있습니다.

  • 비공개로 원하는 항목으로 브랜치를 만드세요.
  • GitHub에서 새 저장소를 만들고 비공개로 설정합니다.
  • 새 GitHub 저장소를 컴퓨터의 저장소에 두 번째 원격으로 추가합니다.
  • 프라이빗 브랜치를 두 번째 리모트로 푸시합니다.

최종 결과는 2 개의 리모컨이있는 저장소 1 개입니다. 공개 1 개, 비공개 1 개.
그에 따라 이름을 지정하는 것에 대해 조심해야합니다.


1

1.) 공용 저장소에 개인 브랜치를 가질 수 있습니까?

내가 아는 바에 따르면 아니야.

2.) 내 공개 저장소를 내 비공개 브랜치로 포크 할 수 있나요?

아니요, 전체 repo (1-n 브랜치)를 단일 브랜치로 포크 할 수 없습니다. 실제로 전체 저장소의 한 분기 만 분기하면 가능합니다. 원격으로 추가하거나 클론에서 시작하십시오.

Sparse 체크 아웃에 관심이있을 수도 있습니다 .

3.) 위의 두 가지가 모두 가능하다면 가장 좋은 방법은

해당 사항 없음

4.) 둘 다 가능하지 않은 경우 어떻게 진행해야합니까?

해당 사항 없음

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