Wie kann ich ein öffentliches Repository aufteilen, aber meine Abzweigung privat machen? Ich habe das Abonnement zur Unterstützung privater Repositorys.
Die Antworten sind korrekt, aber erwähnen Sie nicht, wie Code zwischen dem öffentlichen Repo und der Gabel synchronisiert wird.
Hier ist der vollständige Workflow (wir haben dies vor dem Open Sourcing von React Native durchgeführt ):
Dupliziere zuerst das Repo wie andere gesagt haben (Details hier ):
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 Repo, 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
So holen Sie neue Schärfe aus dem öffentlichen Repo:
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
Genial, Ihr privates Repo enthält jetzt den neuesten Code aus dem öffentlichen Repo sowie Ihre Änderungen.
Zum Erstellen einer Pull-Anfrage Private Repo -> Public Repo:
Verwenden Sie die GitHub-Benutzeroberfläche, um eine Abzweigung des öffentlichen Repos zu erstellen (die kleine Schaltfläche "Abzweigung" oben rechts auf der öffentlichen Repo-Seite). 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 über die Github-Benutzeroberfläche eine Pull-Anfrage für Public-Repo erstellen, wie hier beschrieben .
Sobald die Projektbesitzer Ihre Pull-Anfrage überprüft haben, können sie sie zusammenführen.
Natürlich kann der gesamte Vorgang wiederholt werden (lassen Sie einfach die Schritte weg, in denen Sie Fernbedienungen hinzufügen).
git clone
Remote-Tracking-Zweige und möglicherweise eine andere Konfiguration im geklonten Repo einrichten, die Sie nicht wirklich wollen. Während ein --bare Klon das .git-Verzeichnis so wie es ist von der Fernbedienung kopiert.git status
zeigt alles auf dem neuesten Stand, Arbeitsbaum sauber, egal was ich ändere. Folglich kann ich nichts festlegen und pushen. Ich habe das neue private Repo gelöscht, das ich noch zweimal erstellt habe, um dies zu versuchen, bin aber immer wieder auf dasselbe Problem gestoßen. Irgendwelche Vorschläge?Es gibt jetzt eine weitere Option (Januar 2015)
quelle
Die aktuellen Antworten sind aus Gründen der Übersichtlichkeit etwas veraltet:
Die kurze Antwort lautet:
Dies ist auf GitHub dokumentiert: Duplizieren eines Repositorys
quelle
Sie müssen das Repo duplizieren
Sie können dieses Dokument sehen (von Github)
https://help.github.com/articles/duplicating-a-repository
quelle
GitHub verfügt jetzt über eine Importoption, mit der Sie auswählen können, was Ihr neues importiertes Repository öffentlich oder privat sein soll
quelle