Jak mogę rozwidlić publiczne repozytorium, ale ustawić prywatny widelec? Mam abonament na obsługę prywatnych repozytoriów.
Odpowiedzi są poprawne, ale nie wspominają o synchronizacji kodu między publicznym repozytorium a rozwidleniem.
Oto pełny obieg pracy (zrobiliśmy to przed otwartymi źródłami React Native ):
Najpierw zduplikuj repozytorium, jak powiedzieli inni (szczegóły tutaj ):
Utwórz nowe repozytorium (nazwijmy to private-repo
) za pomocą interfejsu użytkownika Github . Następnie:
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
Sklonuj prywatne repozytorium, aby móc nad nim pracować:
git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master
Aby pobrać nową popularność z publicznego repozytorium:
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
Niesamowite, twoje prywatne repozytorium ma teraz najnowszy kod z repozytorium publicznego oraz twoje zmiany.
Wreszcie, aby utworzyć żądanie ściągania prywatne repo -> repo publiczne:
Użyj interfejsu GitHub, aby utworzyć rozwidlenie publicznego repozytorium (mały przycisk „Widelec” w prawym górnym rogu strony publicznego repozytorium). Następnie:
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
Teraz możesz utworzyć żądanie ściągnięcia za pomocą interfejsu Github dla publicznego repo, jak opisano tutaj .
Gdy właściciele projektu sprawdzą twoje żądanie ściągnięcia, mogą je scalić.
Oczywiście cały proces można powtórzyć (pomiń kroki, w których dodajesz piloty).
git clone
skonfigurował zdalne gałęzie śledzenia i może inną konfigurację w klonowanym repozytorium, której tak naprawdę nie chcesz. Podczas gdy klon --bare po prostu kopiuje .git dir z pilota tak jak jest.git status
pokazuje wszystko na bieżąco, działające drzewo czyste bez względu na to, co zmienię. W związku z tym nie mogę niczego zatwierdzać i naciskać. Usunąłem nowe prywatne repozytorium, które zrobiłem jeszcze 2 razy, aby spróbować, ale wciąż napotykałem ten sam problem. Jakieś sugestie?Teraz jest jeszcze jedna opcja (styczeń 2015)
źródło
Obecne odpowiedzi są nieco nieaktualne, więc dla jasności:
Krótka odpowiedź brzmi:
Jest to udokumentowane w GitHub: repozytorium-repozytorium
źródło
Musisz zduplikować repozytorium
Możesz zobaczyć ten dokument (z github)
https://help.github.com/articles/duplicating-a-repository
źródło
GitHub ma teraz opcję importu, która pozwala wybrać, co chcesz, aby nowe importowane repozytorium było publiczne lub prywatne
źródło