Posiadasz prywatną gałąź publicznego repozytorium na GitHub?


128

Mam publiczny projekt PHP w repozytorium GitHub, który zawiera tylko jedną gałąź (master).

Chcę mieć oddzielną gałąź / fork, która jest dla mnie prywatna (zapłaciłem za prywatne repozytoria GitHub). Chciałbym móc scalić zmiany z oddziału prywatnego / forka do repozytorium publicznego i odwrotnie.

Mając to na uwadze, oto moje pytania:

  1. Czy mogę mieć prywatny oddział w publicznym repozytorium?
  2. Czy mogę rozwidlić moje własne publiczne repozytorium na mój własny oddział / fork?
  3. Jeśli oba powyższe są możliwe, jaki jest najlepszy sposób na przyszłość? Jeśli nie, jak mam postępować?

1
Czy nie jest najlepszym pomysłem rozwidlenie repozytorium publicznego jako repozytorium prywatnego, w którym tworzysz kilka gałęzi, których nie wypychasz (z powrotem) do repozytorium publicznego (i odwrotnie)?
Legolas

1
O to właśnie proszę, chcę mieć możliwość utworzenia kopii repozytorium publicznego, ale moje aktualizacje mają być prywatne (chyba że chcę przenieść określone rzeczy z powrotem do publicznego)
Lizard


@assylias, czy możesz podać to jako odpowiedź? to najlepsza odpowiedź moim zdaniem i nie zwróciłem uwagi na Twój komentarz, zanim sam znalazłem artykuł.
mbh86

@ mbh86 To nie jest tak naprawdę odpowiedź, bycie łączem i nie mam czasu, aby zamienić to w odpowiedź. Ale jeśli chcesz użyć zawartości tej strony, aby utworzyć odpowiedź tutaj (z odniesieniem do oryginalnej witryny), z pewnością może to pomóc innym użytkownikom i dostaniesz moją opinię :-)
assylias

Odpowiedzi:


70
  1. Powiel swoje repozytorium .
  2. Ustaw zduplikowane repozytorium jako prywatne w serwisie GitHub.
  3. Sklonuj prywatne repozytorium na swój komputer
  4. Dodaj pilota do publicznego repozytorium (git remote add public git@github.com: ...)
  5. Przekaż gałęzie z zatwierdzeniami przeznaczonymi dla twojego publicznego repozytorium do tego nowego publicznego pilota. (upewnij się, że przypadkowo nie zatwierdzisz kodu tylko prywatnego)
  6. Możesz wprowadzić zmiany do swojego repozytorium publicznego za pomocą polecenia „git fetch public”, a następnie scalić je lokalnie i przesłać do prywatnego repozytorium (zdalne źródło pochodzenia).

1
Duplikacja działa dla mnie dobrze, chociaż musiałem to zrobić w odwrotnej kolejności, najpierw tworząc prywatne repozytorium, a następnie kopiując tam repozytorium publiczne z wiersza poleceń. Dzięki!
Joel

104

Czy można mieć prywatny oddział w publicznym repozytorium?

W serwisie GitHub Twoje repozytorium jest publiczne lub prywatne; nie można selektywnie „sprywatyzować” tylko oddziału.

Czy mogę rozwidlić moje własne publiczne repozytorium na mój własny oddział / fork?

Możesz sklonować repozytorium publiczne na swój lokalny komputer, rozgałęzić się w razie potrzeby i po prostu nie wypychać swoich „prywatnych” oddziałów w górę (określając, która gałąź ma być wypychana do źródła: git push origin masterlub git push origin branch-i-want-to-be-public:master).

Która droga jest najlepsza / jak mam postępować?

Aby wykorzystać GitHub zarówno do rozwoju publicznego, jak i prywatnego, sugerowałbym rozwidlenie gałęzi publicznej w GitHub, zmianę ustawień nowego rozwidlenia na „Prywatne”, a następnie sklonowanie wersji prywatnej na komputer lokalny. Kiedy będziesz gotowy, aby wprowadzić zmiany do wiadomości publicznej, przenieś wszystko do swojego prywatnego rozwidlenia w GitHub, a następnie użyj żądań ściągnięcia, aby selektywnie skopiować gałęzie do repozytorium publicznego.

Aby repozytorium było prywatne na GitHub, musisz mieć zaktualizowane (płatne) konto. Jeśli używasz tylko darmowego konta, nadal możesz użyć pierwszego procesu, który zasugerowałem - sklonować publiczny na komputer lokalny, oddział i wypchnąć określone „publiczne” gałęzie do źródła - bez potrzeby prywatnego repozytorium.

Jeśli masz płatne konto GitHub lub korzystasz z innej usługi, która oferuje publiczne i prywatne rozwidlenia i żądania ściągnięcia (na przykład BitBucket ), możesz użyć dowolnego z powyższych podejść, aby upublicznić swój kod.


32
GitHub nie pozwala na utworzenie rozwidlenia publicznego repozytorium jako prywatnego. Musisz zduplikować repozytorium, aby uczynić je prywatnym, a wtedy stracisz połączenie z repozytorium publicznym. Zastanawiam się, czy możesz dodać repozytorium publiczne jako oddzielnego pilota do lokalnego klonu repozytorium prywatnego. Następnie przesuń gałęzie do tego pilota.
mj1531

3
Konsekwencją tego jest niestety to, że nie jest możliwe użycie żądań ściągnięcia do ściągnięcia zmian z prywatnego „rozwidlenia” do publicznej kopii repozytorium.
Michael Mior

6
GitHub oferuje teraz nieograniczoną liczbę prywatnych repozytoriów na bezpłatnych kontach.
Nathan F.

1
To naprawdę nie powinna być najlepsza odpowiedź, biorąc pod uwagę, że zalecany przepływ pracy (PR z prywatnego forka) nie działa. Odpowiedzią @ mj1531 jest lepszy przepływ pracy.
stewSquared

3

Jest inne rozwiązanie, które uważam za lepsze, ponieważ nie powoduje podwójnych repozytoriów na tym samym komputerze.

  • Stwórz gałąź z rzeczami, które chcesz mieć prywatne.
  • Utwórz nowe repozytorium w GitHub, ustaw je jako prywatne.
  • Dodaj nowe repozytorium GitHub jako drugiego pilota do repozytorium na komputerze.
  • Przekaż oddział prywatny do drugiego pilota.

Wynik końcowy to 1 repozytorium z 2 pilotami. 1 publiczny, 1 prywatny.
Musisz tylko uważać na to, co naciskasz, aby odpowiednio nazwać.


1

1.) Czy można mieć prywatny oddział w publicznym repozytorium

Z tego co wiem, nie.

2.) Czy mogę podzielić moje własne repozytorium publiczne na mój własny oddział prywatny

Nie, nie możesz rozwidlać pełnego repozytorium (1-n gałęzi) na jedną gałąź. Właściwie możesz, gdybyś tylko rozwidlił jedną gałąź pełnego repozytorium. Po prostu dodaj go jako pilota lub zacznij od klona.

Możesz być także zainteresowany Rzadkimi kasami .

3.) Jeśli oba powyższe rozwiązania są możliwe, jest to najlepszy sposób

n / a

4.) Jeśli żadne z nich nie jest możliwe, jak mam postępować?

n / a

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.