Wie kann ich ein öffentliches Repository forken, aber meinen Fork privat machen? Ich habe das Abonnement zur Unterstützung privater Repositories.
Antworten
Zu viele Anzeigen?Die Antworten sind korrekt, aber sie erwähnen nicht, wie man den Code zwischen dem öffentlichen Repo und dem Fork synchronisiert.
Hier ist der vollständige Arbeitsablauf (wir haben dies vor dem Open-Sourcing getan React Native ):
Duplizieren Sie zunächst das Repo, wie andere gesagt haben (Details aquí ):
Erstellen Sie ein neues Repo (nennen wir es private-repo
) über die Github-Benutzeroberfläche . Dann:
git clone --bare https://github.com/exampleuser/public-repo.git
cd public-repo.git
git push --mirror https://github.com/yourname/private-repo.git
cd ..
rm -rf public-repo.git
Klonen Sie das private Repository, damit Sie daran arbeiten können:
git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master
Um neue Hotness aus dem öffentlichen Repo zu ziehen:
cd private-repo
git remote add public https://github.com/exampleuser/public-repo.git
git pull public master # Creates a merge commit
git push origin master
Toll, Ihr privates Repository enthält jetzt den neuesten Code aus dem öffentlichen Repository und Ihre Änderungen.
Schließlich, um eine Pull-Anfrage zu erstellen private repo -> public repo:
Verwenden Sie die GitHub-Benutzeroberfläche, um einen Fork des öffentlichen Projektarchivs zu erstellen (die kleine Schaltfläche "Fork" oben rechts auf der Seite des öffentlichen Projektarchivs). Dann:
git clone https://github.com/yourname/the-fork.git
cd the-fork
git remote add private_repo_yourname https://github.com/yourname/private-repo.git
git checkout -b pull_request_yourname
git pull private_repo_yourname master
git push origin pull_request_yourname
Jetzt können Sie eine Pull-Anfrage über die Github-Benutzeroberfläche für public-repo erstellen, wie beschrieben aquí .
Sobald die Projektverantwortlichen Ihre Pull-Anfrage geprüft haben, können sie sie zusammenführen.
Natürlich kann der gesamte Vorgang wiederholt werden (lassen Sie einfach die Schritte aus, bei denen Sie Fernbedienungen hinzufügen).
Es gibt jetzt eine weitere Option ( Januar-2015 )
- Neues privates Repository erstellen
- Auf dem leeren Repo-Bildschirm gibt es eine "Import"-Option/-Schaltfläche
- anklicken und die bestehende Github-Repository-URL eingeben Es wird keine Github-Option erwähnt, aber es funktioniert auch mit Github-Repos.
- DONE
Die aktuellen Antworten sind ein wenig veraltet, um Klarheit zu schaffen:
Die kurze Antwort lautet:
- Machen Sie eine nackter Klon des öffentlichen Repo.
- Erstellen Sie eine neue private Seite.
- Machen Sie eine Spiegelschieben zum neuen privaten.
Dies ist auf GitHub dokumentiert: Vervielfältigung eines Repositorys
Gehen Sie einfach zu https://github.com/new/import .
Im Abschnitt "Klon-URL Ihres alten Repositorys" fügen Sie die gewünschte Repository-URL ein und wählen unter "Datenschutz" Private
.
Sie müssen das Repo duplizieren
Sie können dieses Dokument sehen (von github)
Um ein Duplikat eines Repositorys ohne Forking zu erstellen, müssen Sie einen speziellen Clone-Befehl gegen das ursprüngliche Repository ausführen und in das neue spiegeln.
In den folgenden Fällen sollte das Repository, in das Sie pushen möchten - wie exampleuser/new-repository oder exampleuser/mirrored - bereits auf GitHub existieren. Weitere Informationen finden Sie unter "Erstellen eines neuen Repositorys".
Ein Repository spiegeln
Um ein exaktes Duplikat zu erstellen, müssen Sie sowohl einen Bare-Clone als auch einen Mirror-Push durchführen.
Öffnen Sie die Befehlszeile, und geben Sie diese Befehle ein:
$ git clone --bare https://github.com/exampleuser/old-repository.git # Make a bare clone of the repository $ cd old-repository.git $ git push --mirror https://github.com/exampleuser/new-repository.git # Mirror-push to the new repository $ cd .. $ rm -rf old-repository.git # Remove our temporary local repository
Wenn Sie ein Repository an einem anderen Ort spiegeln möchten und dabei auch Aktualisierungen vom Original erhalten möchten, können Sie einen Mirror klonen und die Änderungen in regelmäßigen Abständen veröffentlichen.
$ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git # Make a bare mirrored clone of the repository $ cd repository-to-mirror.git $ git remote set-url --push origin https://github.com/exampleuser/mirrored # Set the push location to your mirror
Wie bei einem bloßen Klon enthält ein gespiegelter Klon alle entfernten Zweige und Tags, aber alle lokalen Referenzen werden bei jedem Holen überschrieben, so dass er immer mit dem ursprünglichen Repository identisch ist. Das Setzen der URL für Pushes vereinfacht das Pushen auf Ihren Mirror. Um Ihren Mirror zu aktualisieren, holen Sie die Updates und pushen Sie sie, was durch einen Cron-Job automatisiert werden kann.
$ git fetch -p origin $ git push --mirror
- See previous answers
- Weitere Antworten anzeigen