Como posso bifurcar um repositório público, mas tornar meu bifurcação privado? Eu tenho a assinatura para dar suporte a repositórios particulares.
As respostas estão corretas, mas não mencionam como sincronizar o código entre o repositório público e o fork.
Aqui está o fluxo de trabalho completo (fizemos isso antes do código aberto React Native ):
Primeiro, duplique o repositório como outros disseram (detalhes aqui ):
Crie um novo repositório (vamos chamá-lo private-repo
) através da interface do usuário do Github . Então:
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
Clone o repositório particular para poder trabalhar nele:
git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master
Para obter novos gostos do repositório público:
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
Impressionante, seu repositório particular agora tem o código mais recente do repositório público e suas alterações.
Por fim, para criar um repositório privado de solicitação pull -> public repo:
Use a interface do usuário do GitHub para criar uma bifurcação do repositório público (o pequeno botão "Fork" no canto superior direito da página do repositório público). Então:
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
Agora você pode criar uma solicitação de recebimento via interface do usuário do Github para repositório público, conforme descrito aqui .
Depois que os proprietários do projeto analisam sua solicitação de recebimento, eles podem mesclá-la.
É claro que todo o processo pode ser repetido (deixe de fora as etapas em que você adiciona controles remotos).
git clone
configurar ramificações de rastreamento remoto e talvez alguma outra configuração no repositório clonado que você realmente não deseja. Enquanto um clone --bare apenas copia o diretório .git do controle remoto como está.git status
mostra tudo atualizado, a árvore de trabalho limpa, não importa o que eu mude. Consequentemente, não posso comprometer e pressionar nada. Excluí o novo repositório particular que fiz mais duas vezes para tentar isso, mas continuei com esse mesmo problema. Alguma sugestão?Há mais uma opção agora (janeiro-2015)
fonte
As respostas atuais estão um pouco desatualizadas, portanto, para maior clareza:
A resposta curta é:
Isso está documentado no GitHub: duplicando um repositório
fonte
Você precisa duplicar o repositório
Você pode ver este documento (no github)
https://help.github.com/articles/duplicating-a-repository
fonte
Agora o GitHub tem uma opção de importação que permite escolher o que você quer que seu novo repositório importado seja público ou privado.
fonte