Come si fa a fork il proprio repository su GitHub?


165

Ho un repository pubblico su GitHub. Voglio replicarlo / copiarlo e lavorare su un nuovo progetto basato su questo repository, ma non voglio influenzare come è adesso. Ho provato a biforcarlo usando l'interfaccia utente di GitHub ma non ha fatto nulla.


4
Cosa stai cercando di ottenere esattamente? Forse puoi risolverlo semplicemente ramificando?
Artefatto2

5
Voglio ottenere una copia del progetto ed estenderlo per fare qualcos'altro ma senza influire sul progetto originale. Questo è stato. In ogni caso, è risolto.
WowBow,

1
@ Artefact2 .. Mi dispiace, ho pensato che la soluzione di mcepl risolvesse il mio bisogno, ma non lo ha fatto. Dopo aver clonato il progetto usando 'git clone', non voglio fare riferimento al repository originale ma a un nuovo repository su github che ho creato. Come posso raggiungerlo?
WowBow,

1
@ Artefact2 Hai ricevuto le mie domande?
WowBow,

2
Il vantaggio di fork rispetto alla creazione di un nuovo repository è che i grafici e la cronologia della rete sono collegati tra loro. È un peccato che Github non lo permetta.
kenchew,

Risposte:


205

Non credo che tu possa fare il fork del tuo repository.
Clonarlo e inviarlo a un nuovo repository è buono ma è necessario:

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

(vedi git push)

Guarda tutto il processo descritto in " Fork tuo progetto su GitHub ".


Sei anni dopo (2016), ora hai l' importatore GitHub che ti consente di importare un repository da un'altra fonte ... incluso GitHub.
Vedi " Importare un repository con GitHub Importer "

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

NARF 's risposta (upvoted) illustrano anche quel processo.

Ciò ti consentirà di creare un nuovo repository e importare la cronologia completa di quella vecchia in quella nuova, usando il suo url GitHub.

Di nuovo: quello che ottieni è una copia, non un vero fork: non puoi fare una richiesta pull dal nuovo repository a quello vecchio.

Ancora una volta (bis), come affermato nei commenti di mpersico, questa non è una VERA FORCELLA.

Se ho un foo che è il repository di fonti canonico per un progetto open source che voglio che altre persone eseguano il fork e che abbiano accesso a fare PR, allora non voglio lavorare in quel repository, voglio un fork che posso usare per emettere PR adeguate contro il mio progetto.
Ho risolto questo problema creando un secondo account in GitHub e dedicandomi a questo.


Grazie @VonC. Penso che hai dimenticato di menzionare la modifica del file di configurazione.
WowBow,

1
Stavo parlando di .git / config. A meno che non modifichi l'URL di origine, quando dici "git remote add ....", ti rifiuterà perché il nome di origine esiste già. Ma una volta modificato l'URL nel file di configurazione funziona bene. L'articolo che mi hai indicato lo dimostra.
WowBow,

7
@WowBow se remoteesiste già, quindi esegui a git remote set-url origin https://github.com/userName/New_Repo. Ciò cambierà il .git/configfile per te. Vedi git-scm.com/docs/git-remote
VonC il

1
@aus che è previsto, per il recupero da upstream. Vedere stackoverflow.com/a/33360766/6309
VonC

1
Sento ancora che dovrebbe essere consentito il fork di repo nella stessa organizzazione. Che cosa succede se esiste un repository centrale generico per tutti e si desidera ottenere aggiornamenti da esso in ogni momento e allo stesso tempo apportare modifiche specifiche alla copia biforcata in base alle proprie esigenze?
Prachi,

107

Un modo semplicissimo per farlo in 30 secondi dal sito web GitHub:

  1. Copia l'URL del tuo repository. Esempio: https://github.com/YourName/YourOldRepo(suggerimento: è l'URL quando guardi la pagina principale del tuo repository su github.
  2. Fai clic +sull'icona nell'angolo in alto a destra.
    https://i.stack.imgur.com/9zJgo.png
  3. Seleziona "Importa repository".
  4. Dove viene richiesto il "Vecchio URL", incolla l'URL che hai copiato al passaggio 1
    https://i.stack.imgur.com/vgWd3.png
  5. Immettere il nome del nuovo repository e fare clic Begin Import.
  6. Questo è tutto! Ora hai una copia dell'intero repository, con tutte le cronologie e le filiali di commit!

Limitazioni: in realtà non è un vero fork. È una copia del repository. Non consentirà di eseguire richieste pull avanti e indietro.


4
Ho dimenticato l'importatore GitHub (rilasciato nel 2016) nella mia vecchia risposta del 2010: ho aggiunto un riferimento a quello strumento e alla tua risposta.
VonC,



4

Clonalo, crea un nuovo repository vuoto e spingilo verso di esso.


1
Grazie. Stavo pensando troppo.
WowBow,

L'ho clonato sul mio computer locale e ho creato un repository vuoto ma, quando provo a git origin github.com/userName/New_Repo.git .. dice che l'origine remota esiste già. Come dovrei risolverlo?
WowBow,

E ora quando lo spingo sta cambiando il repository originale.
WowBow,

Potete per favore dirmi come spingere al nuovo repository? Ho creato il clone e creato un nuovo repository ma non sono riuscito a eseguire il push sul nuovo repository.
WowBow,

5
Devi cambiare i telecomandi. Altrimenti, proverà a spingere nella stessa posizione. git remote rm originseguito dagit remote add origin URL-to-new-repository
wadesworld il

1

Ho seguito queste istruzioni ufficiali per "Duplicazione di un repository" e sembrava funzionare.

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

Per creare un duplicato di un repository senza biforcazione, è necessario eseguire uno speciale comando clone sul repository originale e eseguire il push mirroring su quello nuovo. Funziona con qualsiasi repository git, non solo con quelli ospitati su GitHub.


1

La soluzione accettata di VonC, sfortunatamente, non ha funzionato per me come ho ottenuto

remoto: repository non trovato

Ciò che ha funzionato è stato il seguente:

  1. Crea un new_repo su github
  2. git clone new_repo
  3. cd new_repo
  4. git remote aggiungi upstream old_repo.git
  5. git pull upstream master
  6. git push origin master

Ho ottenuto tutto quanto sopra da qui .


1

Per i non esperti di tecnologia che usano GitHub, ecco una semplice soluzione in alternativa alle altre grandi risposte sopra. Ciò di cui hai bisogno è solo un'applicazione desktop GitHub.

  1. Apri il tuo repository di progetti dal browser e scaricalo come zip, ad es your-project-master.zip.
  2. Decomprimi e rinomina come nuovo repository.
  3. Apri GitHub Desktop e aggiungi il tuo nuovo repository sfogliandolo nel nuovo percorso locale decompresso nuovo repository. inserisci qui la descrizione dell'immagine
  4. Pubblicalo sul tuo github, facendo clic sul pulsante pubblica. Non dimenticare di aggiungere il nome e la descrizione :)


-1

Ho appena provato questo e ha funzionato:

  1. Fork il tuo repository in un account dell'organizzazione
  2. Rinominalo
  3. Trasferisci la proprietà a te stesso

4
Bella idea, ma ho appena provato questo e ottenuto un errore: aspiers already has a repository in the UPSTREAM/NAME network.
Adam Spires,

questo perché ora hanno reindirizzamenti dopo aver rinominato o trasferito i
repository

-1

Quando si crea un nuovo repository, è possibile importare da un altro repository con l'URL repo .git. Mi ci sono voluti 30 secondi.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.