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.


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.


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.


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.


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.


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 .


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 :)



-1

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

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.