Como você bifurca seu próprio repositório no GitHub?

164

Eu tenho um repositório público no GitHub. Quero replicá-lo / copiá-lo e trabalhar em um novo projeto baseado neste repositório, mas não quero afetar como ele está agora. Tentei bifurcá-lo usando a interface do GitHub, mas não fez nada.

WowBow
fonte
4
O que exatamente você está tentando alcançar? Talvez você possa resolvê-lo apenas ramificando?
Artefact2
4
Quero obter uma cópia do projeto e estendê-lo para fazer outra coisa, mas sem afetar o projeto original. Foi isso. De qualquer maneira, está resolvido.
WowBow
1
@ Artefact2 .. Desculpe, eu pensei que a solução por mcepl resolveu minha necessidade, mas isso não aconteceu. Depois de clonar o projeto usando 'git clone', não quero apontar para o repositório original, mas para um novo repositório no github que eu criei. Como posso conseguir isso?
WowBow
1
@ Artefact2 Você recebeu minhas perguntas?
WowBow
1
O benefício do fork em comparação à criação de um novo repositório é que os gráficos e o histórico da rede estão vinculados. É uma pena que o Github não permita isso.
kenchew

Respostas:

205

Eu não acho que você pode bifurcar seu próprio repositório.
Cloná-lo e enviá-lo para um novo repositório é bom, mas você precisa:

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

(ver git push)

Veja todo o processo descrito em " Garfo seu próprio projeto no GitHub ".


Seis anos depois (2016), agora você tem o importador do GitHub, que permite importar um repo de outra fonte ... incluindo o GitHub.
Consulte " Importando um repositório com o GitHub Importador "

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

A resposta do narf (votada acima) também ilustra esse processo.

Isso permitirá que você crie um novo repositório e importe o histórico completo do antigo para o novo, usando o URL do GitHub.

Novamente: o que você recebe é uma cópia, não uma bifurcação real: você não pode fazer uma solicitação pull do novo repositório para o antigo.

Novamente (bis), como declarado nos comentários por mpersico, este não é um TRUE FORK.

Se eu tenho um foo que é o repositório de código-fonte canônico de um projeto de código aberto que quero que outras pessoas bifurcem e tenham acesso ao PR, então não quero trabalhar nesse repositório, quero um fork que possa usar para emitir PRs adequados contra o meu projeto.
Resolvi isso criando uma segunda conta no GitHub e fazendo isso.

VonC
fonte
Obrigado @VonC. Eu acho que você esqueceu de mencionar a edição do arquivo de configuração.
WowBow
1
Eu estava falando sobre .git / config. A menos que você altere o URL de origem, quando você diz "git remote add ....", ele o rejeitará porque, o nome da origem já existe. Mas uma vez que eu mudei o URL no arquivo de configuração, ele funciona bem. O artigo que você apontou para mim mostra isso.
WowBow
7
@WowBow, se remotejá existir, faça a git remote set-url origin https://github.com/userName/New_Repo. Isso mudará o .git/configarquivo para você. Vejo git-scm.com/docs/git-remote
VonC
1
@aus que é esperado, para você buscar a montante. Veja stackoverflow.com/a/33360766/6309
VonC 2/16/16
1
Eu ainda acho que a bifurcação de repo na mesma organização deve ser permitida. E se houver um repositório central genérico para todos e você quiser obter atualizações o tempo todo e, ao mesmo tempo, fazer alterações específicas na sua cópia bifurcada com base nas suas necessidades?
Prachi
107

Uma maneira super fácil de fazer isso em 30 segundos no site do GitHub:

  1. Copie o URL do seu repo. Ex:https://github.com/YourName/YourOldRepo (dica: é o URL quando você olha para a página principal do seu repositório no github.
  2. Clique no +ícone no canto superior direito.
    https://i.stack.imgur.com/9zJgo.png
  3. Selecione "Importar repositório".
  4. Onde ele solicitar o "URL antigo", cole o URL que você copiou na etapa 1
    https://i.stack.imgur.com/vgWd3.png
  5. Digite o nome do seu novo repositório e clique em Begin Import .
  6. É isso aí! Agora você tem uma cópia do repositório completo, com todo o histórico e ramificações de confirmação!

Limitações: Na verdade, não é um garfo real. É uma cópia do repositório. Não permitirá fazer solicitações de retorno e retorno.

narF
fonte
4
Esqueci o Importador do GitHub (lançado em 2016) na minha antiga resposta de 2010: adicionei uma referência a essa ferramenta e a sua resposta.
VonC 23/04
4

Apenas clone-o, crie um novo repositório em branco e pressione-o.

mcepl
fonte
1
Obrigado. Eu estava pensando demais.
WowBow
Eu o clonei na minha máquina local e criei um repositório em branco, mas, quando tento git origin github.com/userName/New_Repo.git .. diz que a origem remota já existe. Como devo resolver isso?
WowBow
E agora, quando pressiono, está mudando o repositório original.
WowBow
Você pode me dizer como avançar para o novo repo? Eu fiz o clone e criei um novo repositório, mas não consegui avançar para o novo repositório.
WowBow
5
Você tem que mudar os controles remotos. Caso contrário, ele tentará avançar para o mesmo local. git remote rm originseguido porgit remote add origin URL-to-new-repository
wadesworld
1

Eu segui estas instruções oficiais para "Duplicar um repositório" e parecia funcionar.

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

Para criar uma duplicata de um repositório sem bifurcar-se, você precisa executar um comando clone especial no repositório original e enviar push para o novo. Isso funciona com qualquer repositório git, não apenas aqueles hospedados no GitHub.

tacadas
fonte
1

A solução aceita do VonC, infelizmente, não funcionou para mim quando cheguei

remote: Repositório não encontrado

O que funcionou foi o seguinte:

  1. Crie um new_repo no github
  2. git clone new_repo
  3. cd new_repo
  4. git remote adicionar upstream old_repo.git
  5. mestre a montante do pull do git
  6. mestre de origem git push

Eu peguei tudo acima daqui .

usuario
fonte
1

Para especialistas em tecnologia que não usam o GitHub, aqui está uma solução simples como alternativa a outras ótimas respostas acima. O que você precisa é apenas de um aplicativo GitHub Desktop.

  1. Abra seu próprio repositório de projeto no navegador e faça o download como um zip, por exemplo your-project-master.zip.
  2. Descompacte e renomeie-o como seu novo repositório.
  3. Abra o GitHub Desktop e adicione seu novo repositório navegando até o novo repositório do caminho local descompactado. insira a descrição da imagem aqui
  4. Publique-o no seu github, clicando no botão Publicar. Não se esqueça de adicionar o nome e a descrição :)
Zuzu Softman
fonte
-1

Apenas tentei isso e funcionou:

  1. Coloque seu repositório em uma conta da organização
  2. Renomeie-o
  3. Transferir a propriedade de volta para si mesmo
Dominykas Blyžė
fonte
4
Boa idéia, mas eu só tentei isso e tenho um erro: aspiers already has a repository in the UPSTREAM/NAME network.
Adam Spiers
isso é porque eles têm agora redirecionamentos após renomear ou transferir seus repos github.com/blog/1508-repository-redirects-are-here
shadowbq
-1

Ao criar um novo repo, você pode importar de outro repo com o URL repo .git. Levei 30 segundos.

Gino
fonte