Możesz zajrzeć do pomocy Git's submodule. Podmoduł umożliwia osadzenie jednego repozytorium git wewnątrz innego repozytorium git. Do tego rodzaju rzeczy jest alternative solutions, ale sam ich nie użyłem.
Przykładem może wyglądać następująco:
$ git clone git://github.com/username/project.git
$ cd project
$ git submodule add git://github.com/username/framework.git framework
$ git commit -m "added framework submodule"
Jeśli klonowania repozytorium z submodules, trzeba użyć opcji --recursive
:
$ git clone --recursive git://<repository-with-submodules>.git
lub alternatywnie, można regularnie sklonować i następnie uruchom:
$ git submodule init
$ git submodule update
Przeczytaj powiązany dokument (i git submodule --help
), aby uzyskać więcej informacji.
W przypadku wprowadzenia zmian do modułem, wprowadzą je w ten sposób:
# first update the submodule just like any other git repository
$ cd project/framework
$ git pull
# now you have to record the new commit in the parent repository
$ cd ..
$ git commit -m "updated framework submodule"
Ostatnim krokiem jest konieczne, ponieważ git rejestruje specyficzny commit związane z danym modułem (tak, że gdy ktoś klonuje rodzica, otrzymają tę wersję modułu, a nie jego najnowszą wersję, która mogła zostać przełamana, co uniemożliwiłoby jej działanie zgodnie z zamierzeniami w repozytorium nadrzędnym). Więc jeśli zaktualizujesz moduł częściowy, musisz zarejestrować nowy commit w rodzica.
Jeśli dokonasz zmian w module submodułu framework
, będziesz ponownie tylko git push
, tak jak w przypadku każdego innego repozytorium. Następnie musisz zatwierdzić nową wersję w module nadrzędnym.
Idealne, więc gdy wprowadzane są zmiany w programie Framework, jak mogę je przenieść do projektu teraz, gdy jest to moduł? Ponadto, jeśli wprowadzę zmiany do programu ramowego zamiast projektu, w jaki sposób mogę je ponownie wprowadzić do repozytorium git ramowego? – Justin
Zaktualizowałem swoją odpowiedź. – larsks
Jedna mała uwaga. Moduł podrzędny HEAD jest odłączony, dlatego należy zachować ostrożność podczas wprowadzania zmian w module częściowym. Utwórz oddział (lub przełącz się do oddziału), wprowadź zmiany, zatwierdz, a następnie naciśnij. – GoZoner