Comment créez-vous votre propre référentiel sur GitHub?

165

J'ai un référentiel public sur GitHub. Je veux le répliquer / le copier et travailler sur un nouveau projet basé sur ce référentiel, mais je ne veux pas affecter comment il est maintenant. J'ai essayé de le forger en utilisant l'interface utilisateur de GitHub mais cela n'a rien fait.

WowBow
la source
4
Qu'essayez-vous de réaliser exactement? Peut-être que vous pouvez le résoudre simplement en branchant?
Artefact2
5
Je veux obtenir une copie du projet et étendre ce projet pour faire autre chose mais sans affecter le projet d'origine. C'était ça. De toute façon, c'est résolu.
WowBow
1
@ Artefact2 .. Désolé, je pensais que la solution de mcepl avait résolu mon besoin, mais ce n'était pas le cas. Après avoir cloné le projet en utilisant 'git clone', je ne veux pas pointer vers le dépôt d'origine mais vers un nouveau dépôt sur github que j'ai créé. Comment puis-je y parvenir?
WowBow
1
@ Artefact2 Avez-vous reçu mes questions?
WowBow
2
L'avantage de fork par rapport à la création d'un nouveau dépôt est que les graphiques et l'historique du réseau sont liés entre eux. C'est dommage que Github ne permette pas cela.
kenchew

Réponses:

206

Je ne pense pas que vous puissiez créer votre propre pension.
Le cloner et le pousser vers un nouveau dépôt est une bonne chose, mais vous devez:

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

(voir git push)

Voir le processus complet décrit dans " Créez votre propre projet sur GitHub ".


Six ans plus tard (2016), vous disposez désormais de l' importateur GitHub qui vous permet d'importer un dépôt depuis une autre source ... y compris GitHub.
Voir " Importer un référentiel avec GitHub Importer "

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

narf de réponse (upvoted) illustrent également ce processus.

Cela vous permettra de créer un nouveau référentiel et d'importer l'historique complet de l'ancien dans le nouveau, en utilisant son url GitHub.

Encore une fois: ce que vous obtenez est une copie, pas un vrai fork: vous ne pouvez pas faire de pull request du nouveau repo vers l'ancien.

Encore une fois (bis), comme indiqué dans les commentaires de mpersico, ce n'est pas une VRAIE FOURCHE.

Si j'ai un foo qui est le repo source canonique pour un projet open source que je veux que d'autres personnes fourchent et aient accès pour faire des relations publiques, alors je ne veux pas travailler dans ce repo, je veux un fork que je peux utiliser pour émettre bonnes relations publiques contre mon projet.
J'ai résolu ce problème en créant un deuxième compte dans GitHub et en y passant.

VonC
la source
Merci @VonC. Je pense que vous avez oublié de mentionner l'édition du fichier de configuration.
WowBow
1
Je parlais de .git / config. À moins que vous ne changiez l'url d'origine, quand vous dites "git remote add ....", cela vous rejettera car le nom d'origine existe déjà. Mais une fois que j'ai changé l'url dans le fichier de configuration, cela fonctionne très bien. L'article que vous m'avez signalé le montre.
WowBow
7
@WowBow s'il remoteexiste déjà, alors effectuez un git remote set-url origin https://github.com/userName/New_Repo. Cela changera le .git/configfichier pour vous. Voir git-scm.com/docs/git-remote
VonC
1
@aus qui est attendu, à récupérer depuis l'amont. Voir stackoverflow.com/a/33360766/6309
VonC
1
Je pense toujours que la fourchette de repo dans la même organisation devrait être autorisée. Que se passe-t-il s'il existe un référentiel central générique pour tout le monde et que vous souhaitez en obtenir des mises à jour tout le temps et en même temps apporter des modifications spécifiques à votre copie fourchue en fonction de vos besoins?
Prachi
107

Un moyen très simple de le faire en 30 secondes à partir du site Web GitHub:

  1. Copiez l'URL de votre dépôt. Ex: https://github.com/YourName/YourOldRepo(indice: c'est l'URL lorsque vous regardez la page principale de votre dépôt sur github.
  2. Cliquez sur l' +icône dans le coin supérieur droit.
    https://i.stack.imgur.com/9zJgo.png
  3. Sélectionnez "Importer le référentiel".
  4. Là où il demande "Ancienne URL", collez l'URL que vous avez copiée à l'étape 1
    https://i.stack.imgur.com/vgWd3.png
  5. Entrez le nom de votre nouveau repo et cliquez sur Begin Import.
  6. C'est tout! Vous avez maintenant une copie du repo complet, avec tout l'historique des commit et les branches!

Limitations: ce n'est pas vraiment une vraie fourchette. C'est une copie du repo. Cela ne permettra pas de faire des pull requests dans les deux sens.

narF
la source
4
J'ai oublié l'importateur GitHub (publié en 2016) dans mon ancienne réponse de 2010: j'ai ajouté une référence à cet outil et à votre réponse.
VonC
5

Le moyen le plus simple d'obtenir l'effet souhaité est de créer un nouveau référentiel, puis de sélectionner l'option d'importation et de fournir l'URL du référentiel que vous souhaitez créer.

Les images ci-dessous vous aideront:

Fork propre repo via import-1

Fork propre repo via import-2

Nabil_H
la source
4

Il suffit de le cloner, de créer un nouveau dépôt vierge et de le pousser.

mcepl
la source
1
Merci. Je réfléchissais trop.
WowBow
Je l'ai cloné sur ma machine locale et créé un dépôt vide mais, quand j'essaye de git origin github.com/userName/New_Repo.git .. il dit que l'origine distante existe déjà. Comment dois-je résoudre ça?
WowBow
Et maintenant, quand je le pousse, cela change le repo d'origine.
WowBow
Pouvez-vous s'il vous plaît me dire comment pousser vers le nouveau repo? J'ai fait le clonage et créé un nouveau dépôt, mais je n'ai pas pu pousser vers le nouveau dépôt.
WowBow
5
Vous devez changer les télécommandes. Sinon, il essaiera de pousser au même endroit. git remote rm originsuivi degit remote add origin URL-to-new-repository
wadesworld
1

J'ai suivi ces instructions officielles pour "Dupliquer un référentiel" et cela a semblé fonctionner.

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

Pour créer un duplicata d'un référentiel sans forking, vous devez exécuter une commande de clonage spéciale sur le référentiel d'origine et envoyer en miroir vers le nouveau. Cela fonctionne avec n'importe quel référentiel git, pas seulement ceux hébergés sur GitHub.

phocks
la source
1

La solution acceptée de VonC, malheureusement, n'a pas fonctionné pour moi comme je l'ai

distant: référentiel introuvable

Ce qui a fonctionné était le suivant:

  1. Créer un new_repo sur github
  2. git clone new_repo
  3. cd nouveau_repo
  4. git remote ajouter en amont old_repo.git
  5. git pull maître en amont
  6. git push origin master

J'ai tout ce qui précède d' ici .

pseudo
la source
1

Pour les non-experts en technologie utilisant GitHub, voici une solution simple comme alternative aux autres excellentes réponses ci-dessus. Vous n'avez besoin que d'une application de bureau GitHub.

  1. Ouvrez votre propre dépôt de projet à partir du navigateur et téléchargez-le sous forme de zip, par exemple your-project-master.zip.
  2. Décompressez et renommez-le comme votre nouveau dépôt.
  3. Ouvrez GitHub Desktop et ajoutez votre nouveau dépôt en le parcourant dans votre nouveau répertoire de chemin local décompressé. entrez la description de l'image ici
  4. Publiez-le sur votre github, en cliquant sur le bouton de publication. N'oubliez pas d'ajouter le nom et la description :)
Zuzu Softman
la source
-1

Juste essayé ceci, et cela a fonctionné:

  1. Transformez votre repo en un compte d'organisation
  2. Renommez-le
  3. Transférer la propriété à vous
Dominykas Blyžė
la source
4
Bonne idée mais j'essayé et obtenu une erreur: aspiers already has a repository in the UPSTREAM/NAME network.
Adam Spiers
c'est parce qu'ils ont maintenant des redirections après que vous ayez renommé ou transféré vos dépôts github.com/blog/1508-repository-redirects-are-here
shadowbq
-1

Lorsque vous créez un nouveau dépôt, vous pouvez importer à partir d'un autre dépôt avec l'URL du dépôt .git. Cela m'a pris 30 secondes.

Gino
la source