Utworzyłem repozytorium git z podmodułem. Jestem w stanie powiedzieć samemu podmodułowi, aby zmienił ścieżkę zdalnego repozytorium, ale nie jestem pewien, jak powiedzieć repozytorium nadrzędnemu, jak zmienić ścieżkę zdalnego repozytorium dla tego podmodułu.
Nie zdziwiłbym się, gdyby trochę nie miałem szczęścia i musiałem robić rzeczy ręcznie, ponieważ nawet usuwanie submodułów nie jest łatwe.
git
git-submodules
Andrew Grimm
źródło
źródło
git submodule set-url [--] <path> <newurl>
Odpowiedzi:
Powinieneś po prostu móc edytować
.gitmodules
plik, aby zaktualizować adres URL, a następnie uruchomić,git submodule sync
aby odzwierciedlić tę zmianę w superprojekcie i kopii roboczej.źródło
git submodule foreach -q git config remote.origin.url
aby zobaczyć „rzeczywiste” adresy podmodułów.git/config
dla mnie przy użyciu git 2.1.0. Musiałem zaktualizować oba.gitmodules
i.git/config
ręcznie przed uruchomieniem a,git submodule sync --recursive
aby mój zdalny podmoduł został zaktualizowany.git submodule update --init --recursive --remote
który faktycznie zmienia repozytorium na nowy pilotTe polecenia wykonają pracę w wierszu polecenia bez zmiany żadnych plików w lokalnym repozytorium
Zobacz zrzuty ekranu na blogu: Zmiana adresu URL / gałęzi GIT na inny adres URL / gałąź tego samego repozytorium
źródło
git add .gitmodules
git commit -m "modified submodule URL"
git push origin master
Mówiąc najprościej, wystarczy edytować plik .gitmodules, a następnie ponownie zsynchronizować i zaktualizować:
Edytuj plik za pomocą polecenia git lub bezpośrednio:
Lub tylko:
następnie ponownie zsynchronizuj i zaktualizuj:
źródło
git submodule update --init
pracował dla mnie,--remote
wydaje się wiązać go z HEAD zdalnego repo.W Git 2.25 (Q1 2020) możesz go modyfikować .
Zobacz „ Zmieniony adres URL modułu podrzędnego Git ” i nowe polecenie
Oryginalna odpowiedź (maj 2009 r., Dziesięć lat temu)
W kwietniu 2009 r. Przesłano łatkę wyjaśniającą
gitmodule
rolę.Więc teraz dokumentacja gitmodule nie obejmuje jeszcze:
To właściwie potwierdza odpowiedź Jima .
Jeśli wykonasz ten samouczek git submodule , zobaczysz, że potrzebujesz "
git submodule init
", aby dodać adresy URL repozytorium submodułu do .git / config.W sierpniu 2008 r. dodano „
git submodule sync
” właśnie po to, aby ułatwić to zadanie, gdy zmienia się adres URL (szczególnie jeśli liczba podmodułów jest ważna). Powiązanie skryptu z tym poleceniem jest dość proste:Celem pozostaje:
git config remote."$remote".url "$url"
źródło
.git/config
, wykonując:git config submodule."$submodule_name".url "$new_url"
co również zostało opisane tutaj .git submodule set-url [--] <path> <newurl>
?Co zadziałało dla mnie (w systemie Windows przy użyciu gita w wersji 1.8.3.msysgit.0):
git submodule init
igit submodule update
Po tym wszystkim wszystko jest w stanie, którego bym się spodziewał. Wyobrażam sobie, że inni użytkownicy repozytorium będą odczuwać podobny ból, kiedy przyjdą na aktualizację - mądrze byłoby wyjaśnić te kroki w wiadomości zatwierdzającej!
źródło
git submodule update
. Podążanie za innymi odpowiedziami nie zmieniłoby tego, co było w katalogu,./git/modules/external
więc próba aktualizacji spowodowałaby, że nadal pobierałby nieprawidłowy adres URL.Po prostu edytuj plik .git / config . Na przykład; jeśli masz „wspólny” podmoduł, możesz to zrobić w super-module:
źródło
git config --file=.gitmodules -e
otwiera domyślny edytor, w którym możesz zaktualizować ścieżkęźródło