492 Stimmen

GitHub: Wie macht man einen Fork eines öffentlichen Repositorys privat?

Wie kann ich ein öffentliches Repository forken, aber meinen Fork privat machen? Ich habe das Abonnement zur Unterstützung privater Repositories.

698voto

Martin Konicek Punkte 36092

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

172voto

szydan Punkte 1998

Es gibt jetzt eine weitere Option ( Januar-2015 )

  1. Neues privates Repository erstellen
  2. Auf dem leeren Repo-Bildschirm gibt es eine "Import"-Option/-Schaltfläche enter image description here
  3. anklicken und die bestehende Github-Repository-URL eingeben Es wird keine Github-Option erwähnt, aber es funktioniert auch mit Github-Repos. enter image description here
  4. DONE

49voto

stefano Punkte 3492

Die aktuellen Antworten sind ein wenig veraltet, um Klarheit zu schaffen:

Die kurze Antwort lautet:

  1. Machen Sie eine nackter Klon des öffentlichen Repo.
  2. Erstellen Sie eine neue private Seite.
  3. Machen Sie eine Spiegelschieben zum neuen privaten.

Dies ist auf GitHub dokumentiert: Vervielfältigung eines Repositorys

48voto

DJTano Punkte 728

Gehen Sie einfach zu https://github.com/new/import .

GitHub Import

Im Abschnitt "Klon-URL Ihres alten Repositorys" fügen Sie die gewünschte Repository-URL ein und wählen unter "Datenschutz" Private .

39voto

bsuttor Punkte 2568

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

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X