Wie kann man sein eigenes Repository auf GitHub aufteilen?

172

Ich habe ein öffentliches Repository auf GitHub. Ich möchte es replizieren / kopieren und an einem neuen Projekt arbeiten, das auf diesem Repository basiert, aber ich möchte nicht beeinflussen, wie es jetzt ist. Ich habe versucht, es über die GitHub-Benutzeroberfläche zu forken, aber es hat nichts getan.

WowBow
quelle
4
Was genau versuchst du zu erreichen? Vielleicht können Sie es lösen, indem Sie einfach verzweigen?
Artefakt2
5
Ich möchte eine Kopie des Projekts erhalten und dieses Projekt erweitern, um etwas anderes zu tun, ohne das ursprüngliche Projekt zu beeinflussen. Das war's. Wie auch immer, es ist gelöst.
WowBow
1
@ Artefact2 .. Sorry, ich dachte, die Lösung von mcepl hat mein Bedürfnis gelöst, aber es hat nicht geklappt. Nachdem ich das Projekt mit 'git clone' geklont habe, möchte ich nicht auf das ursprüngliche Repo verweisen, sondern auf ein neues Repo auf github, das ich erstellt habe. Wie kann ich das erreichen?
WowBow
1
@ Artefact2 Hast du meine Fragen bekommen?
WowBow
2
Der Vorteil von Fork gegenüber der Erstellung eines neuen Repos besteht darin, dass die Diagramme und der Netzwerkverlauf miteinander verknüpft sind. Schade, dass Github das nicht zulässt.
Kenchew

Antworten:

215

Ich glaube nicht, dass du dein eigenes Repo teilen kannst.
Klonen und in ein neues Repo verschieben ist gut, aber Sie müssen:

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

(siehe git push)

Siehe den unter " Fork your own project on GitHub " beschriebenen Prozess .


Sechs Jahre später (2016) haben Sie jetzt den GitHub-Importer , mit dem Sie ein Repo aus einer anderen Quelle importieren können ... einschließlich GitHub.
Siehe " Importieren eines Repositorys mit GitHub Importer "

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

narf ‚s Antwort (upvoted) zeigen auch diesen Prozess.

Auf diese Weise können Sie ein neues Repository erstellen und den vollständigen Verlauf des alten Repositorys mithilfe der GitHub-URL in das neue importieren.

Nochmals: Was Sie erhalten, ist eine Kopie, keine echte Gabelung: Sie können keine Pull-Anfrage vom neuen zum alten Repo stellen.

Wieder (bis), wie in den Kommentaren von angegeben mpersico, ist dies keine WAHRE GABEL.

Wenn ich ein Foo habe, das das kanonische Quell-Repo für ein Open-Source-Projekt ist, das andere Leute teilen und Zugriff auf PR haben sollen, dann möchte ich nicht in diesem Repo arbeiten, sondern eine Gabel, die ich zum Ausgeben verwenden kann richtige PRs gegen mein Projekt.
Ich habe dieses Problem gelöst, indem ich ein zweites Konto in GitHub erstellt und darauf verzichtet habe.

VonC
quelle
Danke @VonC. Ich denke, Sie haben vergessen, die Bearbeitung der Konfigurationsdatei zu erwähnen.
WowBow
1
Ich habe über .git / config gesprochen. Wenn Sie die Ursprungs-URL nicht ändern und "git remote add ...." sagen, werden Sie abgelehnt, da der Ursprungsname bereits vorhanden ist. Aber sobald ich die URL in der Konfigurationsdatei geändert habe, funktioniert es gut. Der Artikel, auf den Sie mich hingewiesen haben, zeigt das.
WowBow
7
@WowBow falls remotebereits vorhanden, dann mache a git remote set-url origin https://github.com/userName/New_Repo. Das wird die .git/configDatei für Sie ändern . Siehe git-scm.com/docs/git-remote
VonC
1
@aus das wird erwartet, damit du vom Upstream abrufst. Siehe stackoverflow.com/a/33360766/6309
VonC
1
Ich bin immer noch der Meinung, dass das Gabeln von Repo in derselben Organisation erlaubt sein sollte. Was ist, wenn es ein zentrales Repository gibt, das für alle generisch ist und Sie ständig Updates davon erhalten und gleichzeitig bestimmte Änderungen an Ihrer gegabelten Kopie vornehmen möchten, die Ihren Anforderungen entsprechen?
Prachi
115

Ein super einfacher Weg, dies in 30 Sekunden von der GitHub-Website aus zu tun:

  1. Kopieren Sie die URL Ihres Repos. Beispiel: https://github.com/YourName/YourOldRepo(Hinweis: Dies ist die URL, wenn Sie sich die Hauptseite Ihres Repos auf Github ansehen.
  2. Klicken Sie auf das +Symbol in der oberen rechten Ecke.
    https://i.stack.imgur.com/9zJgo.png
  3. Wählen Sie "Repository importieren".
  4. Fügen Sie dort, wo Sie nach der "alten URL" gefragt werden, die URL ein, die Sie in Schritt 1 kopiert haben
    https://i.stack.imgur.com/vgWd3.png
  5. Geben Sie den Namen Ihres neuen Repos ein und klicken Sie auf Begin Import.
  6. Das ist es! Sie haben jetzt eine Kopie des vollständigen Repos mit allen Commit-Historien und Zweigen!

Einschränkungen: Es ist eigentlich keine echte Gabel. Es ist eine Kopie des Repos. Pull-Anfragen können nicht hin und her gezogen werden.

narF
quelle
4
Ich habe den GitHub-Importer (veröffentlicht 2016) in meiner alten Antwort von 2010 vergessen: Ich habe einen Verweis auf dieses Tool und auf Ihre Antwort hinzugefügt.
VonC
5

Der einfachste Weg, um den gewünschten Effekt zu erzielen, besteht darin, ein neues Repository zu erstellen, dann die Importoption auszuwählen und die URL des Repos anzugeben, das Sie teilen möchten.

Bilder unten helfen:

Gabel eigenes Repo über Import-1

Gabel eigenes Repo über Import-2

Nabil_H
quelle
4

Klonen Sie es einfach, erstellen Sie ein neues leeres Repo und drücken Sie darauf.

mcepl
quelle
1
Vielen Dank. Ich habe zu viel nachgedacht.
WowBow
Ich habe es auf meinen lokalen Computer geklont und ein leeres Repo erstellt, aber wenn ich versuche, den Ursprung zu gitub.com/userName/New_Repo.git .., heißt es, dass der entfernte Ursprung bereits existiert. Wie soll ich das lösen?
WowBow
Und jetzt, wenn ich drücke, ändert sich das ursprüngliche Repo.
WowBow
Kannst du mir bitte sagen, wie ich zum neuen Repo drängen soll? Ich habe den Klon gemacht und ein neues Repo erstellt, aber ich konnte nicht auf das neue Repo pushen.
WowBow
5
Sie müssen die Fernbedienungen wechseln. Andernfalls wird versucht, an denselben Speicherort zu pushen. git remote rm origingefolgt vongit remote add origin URL-to-new-repository
Wadesworld
1

Ich habe diese offiziellen Anweisungen zum "Duplizieren eines Repositorys" befolgt und es schien zu funktionieren.

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

Um ein Duplikat eines Repositorys ohne Verzweigung zu erstellen, müssen Sie einen speziellen Klonbefehl für das ursprüngliche Repository ausführen und auf das neue Repository spiegeln. Dies funktioniert mit jedem Git-Repository, nicht nur mit solchen, die auf GitHub gehostet werden.

Phocks
quelle
1

Die akzeptierte Lösung von VonC hat bei mir leider nicht funktioniert

remote: Repository nicht gefunden

Was funktionierte, war Folgendes:

  1. Erstellen Sie ein neues_repo bei github
  2. Git-Klon new_repo
  3. cd new_repo
  4. git remote add upstream old_repo.git
  5. Git Pull Upstream Master
  6. Git Push Origin Master

Ich habe all das von hier bekommen .

Nick
quelle
1

Für technisch nicht versierte Benutzer von GitHub gibt es hier eine einfache Lösung als Alternative zu anderen großartigen Antworten. Was Sie brauchen, ist nur eine GitHub Desktop-Anwendung.

  1. Öffnen Sie Ihr eigenes Projekt-Repo über den Browser und laden Sie es als Zip herunter, z your-project-master.zip.
  2. Entpacken Sie es und benennen Sie es in Ihr neues Repo um.
  3. Öffnen Sie GitHub Desktop und fügen Sie Ihr neues Repo hinzu, indem Sie es zu Ihrem neuen Repo für den entpackten lokalen Pfad durchsuchen. Geben Sie hier die Bildbeschreibung ein
  4. Veröffentlichen Sie es auf Ihrem Github, indem Sie auf die Schaltfläche "Veröffentlichen" klicken. Vergessen Sie nicht, den Namen und die Beschreibung hinzuzufügen :)
Zuzu Softman
quelle
0

Obwohl es nicht möglich ist, Ihr eigenes Repo in dasselbe Konto einzubinden, kann es in ein eigenes Organisationskonto umgewandelt werden, das einfach und kostenlos über die Schaltfläche "+" erstellt werden kann.

Der Hauptvorteil dieser Option ist, dass das neue Repo eine echte Gabelung des ursprünglichen Repos ist und nicht nur ein Klon. Dies bedeutet, dass Sie beispielsweise Änderungen im ursprünglichen Repo in das neue aktualisieren können (was bei einem geklonten Repo nicht der Fall ist).

Der einzige Nachteil, den ich sehe, ist, dass das gegabelte Repo nicht unter dem Benutzerprofil, sondern unter dem Organisationsprofil angezeigt wird.

FedFranz
quelle
-1

Ich habe es gerade versucht und es hat funktioniert:

  1. Forken Sie Ihr Repo in ein Organisationskonto
  2. Benennen Sie es um
  3. Übertragen Sie das Eigentum zurück auf sich selbst
Dominykas Blyžė
quelle
4
Gute Idee, aber ich habe es gerade versucht und einen Fehler bekommen : aspiers already has a repository in the UPSTREAM/NAME network.
Adam Spires
Dies liegt daran, dass sie jetzt Weiterleitungen haben, nachdem Sie Ihre Repos umbenannt oder übertragen haben. github.com/blog/1508-repository-redirects-are-here
shadowbq
-1

Wenn Sie ein neues Repo erstellen, können Sie es mit der Repo-URL .git aus einem anderen Repo importieren. Ich habe 30 Sekunden gebraucht.

Gino
quelle