Git: oddział czy widelec?

17

Mam projekt gry, który będzie miał dwie wersje:

  1. Prosta wersja gry, rdzeń.
  2. Zaawansowana wersja gry.

Mam pierwszą wersję w moim publicznym repozytorium i tylko ja będę nad nią pracować. Jeśli chodzi o drugą wersję, dwóch moich przyjaciół i ja będziemy nad nią pracować. Najważniejsze jest to, że chcę, aby dwie wersje pozostały w moim repozytorium.

Pomyślałem, że mogę użyć do tego gałęzi, ale biorąc pod uwagę to pytanie i odpowiedź , nie jest to dobra praktyka, jeśli chodzi o wersjonowanie. O ile się dowiedziałem, rozwidlenie własnego repozytorium nie jest możliwe.

Jakie są moje opcje tutaj? Jak mogę przechowywać obie wersje w moim repozytorium?

Varaquilex
źródło
3
Widelec to gałąź, po prostu przechowywana w innym miejscu.
@MichaelT Ok. Czy w pewnym momencie widelce mają zostać scalone, jak gałęzie?
Varaquilex
22
Fork to koncepcja github, a nie koncepcja git. Po prostu klonuje i umieszcza je na koncie. Więc klonowanie jest tym, czego szukasz. Zobacz stackoverflow.com/questions/6286571/git-fork-is-git-clone
pdr
@Varaquilex Way czy chciałbyś zachować obie wersje w jednym repozytorium? Również forkrepozytorium utworzy nowe repozytorium na twoim koncie.
Mahdi
1
Dlaczego nie mieć tylko jednej wersji, która może działać w trybie prostym lub zaawansowanym? Oczywiście niektóre części kodu byłyby aktywne tylko w prostych, a niektóre tylko w zaawansowanych, ale myślę, że wiele z nich byłoby udostępnionych.
bdsl

Odpowiedzi:

11

Wydaje mi się, że potrzebujesz dwóch repozytoriów, a nie dwóch oddziałów . Gałąź jest mechanizmem do obsługi zmian w jednym repozytorium, aby ostatecznie połączyć je z resztą kodu.

Jeśli naprawdę chcesz zachować obie wersje podobnej bazy kodu w tym samym repozytorium, wówczas jedyną opcją jest przejście do Oddziału , jednak jak wspomniano wcześniej, głównym celem oddziału jest oddzielenie niektórych określonych zatwierdzeń w sposób że nie powodują konfliktów z resztą kodu w okresie programowania i łączą je, gdy są gotowe do pracy.

Istnieją sytuacje, w których repozytorium ma dwie nieznacznie różne gałęzie - np. 32-bitowe i 64-bitowe wersje tego samego kodu źródłowego, jednak nadal polecam wybranie oddzielnych repozytoriów, jeśli jest to opcja.

Mahdi
źródło
6

Odpowiedź na pytanie „czy mam sklonować czy rozwidlić” jest dokładnie taka sama jak odpowiedź na to pytanie „czy chcę mieć własną wersję tego projektu?” tak = rozwidlenie, nie = klonowanie repozytorium.

W git gałąź jest lekką rzeczą, która często jest tymczasowa i może zostać usunięta. Fork (on github) to nowy projekt oparty na poprzednim projekcie. Klonujesz repozytorium, aby pracować nad nim jako członek zespołu.

W wielu projektach publicznych rozwidlasz projekt, aby zachować zmiany robocze poza głównym projektem.

W fazie 2 rozwidlaj projekt, a następnie sklonuj go na działającym komputerze i poproś znajomych o zrobienie tego samego.

DwB
źródło
Jak mogę rozwidlić własny projekt?
Varaquilex
wybierz repozytorium w github, a następnie kliknij widelec (dla mnie przycisk w prawym górnym rogu)
DwB
Wiem, jak to zrobić. Chodzi o to, że kiedy próbujesz sklonować własny projekt, po prostu zostajesz przekierowany do repozytorium, tak jak nacisnąłeś przycisk odświeżania. Nie ma żadnych dodatkowych repozytoriów na liście podczas przeglądania repozytoriów po próbie rozwidlenia własnego projektu. Myślę, że zrobię nowe repozytorium, skopiuję zawartość drugiego repozytorium, które chcę rozwidlić i będę kontynuować pracę z innymi ludźmi.
Varaquilex
0

To, co naprawdę brzmi tak, jak chcesz, to submoduł. Jeśli utworzysz pierwsze repozytorium (twoje prywatne repozytorium proste), a następnie dodasz je jako podmoduł do repozytorium wersji zaawansowanej, powinieneś być w stanie śledzić i wyciągać zmiany w submodule w repozytorium zaawansowanym podczas opracowywania prywatnego repozytorium prostego.

Ryan Holleran
źródło
1
Kilka osób nie spieszyło się z odpowiedzią -1 Ryana, ale nie skomentowało, dlaczego, a to zachowanie jest sprzeczne z duchem wytycznych SO. Jeśli w pytaniu PO „rdzeń” był identyczny w obu drzewach, mając zarówno „prosty”, jak i „zaawansowany” otok wokół rdzenia, to odpowiedź ta jest co najmniej rozsądna.
Scott Prive
Głosowałem za głosem, ale prawdopodobnie powinien zawierać takie wyjaśnienie, które wyjaśnia, dlaczego podmoduł byłby dobry i jak miałby działać. Podzielenie wspólnego kodu na bibliotekę, która może być zawarta jako podmoduł, jest dobrym pomysłem, ale bez sprecyzowania, że ​​należy to zrobić, sugestia o podmodule nie wydaje się natychmiast mieć sensu.
Sean Burton