Подтвердить что ты не робот

Подкатегория git с собственной вилкой

Я добавил подмодуль в мой репозиторий git следующим образом:

$ git submodule add git://github.com/user/some-library some-library

Я решил, что хочу создать вилку этой библиотеки, чтобы выполнить некоторые настройки. Как я могу поменять этот подмодуль так, чтобы вместо этого он указывал на мою собственную вилку github?

4b9b3361

Ответ 1

Подмодули хранятся в .gitmodules:

$ cat .gitmodules
[submodule "ext/google-maps"]
    path = ext/google-maps
    url = git://git.naquadah.org/google-maps.git

Если вы редактируете url с помощью текстового редактора, вам необходимо запустить следующее:

$ git submodule sync

Это обновляет .git/config, который содержит копию этого списка подмодулей (вы также можете просто отредактировать соответствующий раздел [submodule] .git/config вручную)

Возможно, есть способ сделать это только с командами git, хотя система submodule кажется немного неполной (например, см. инструкции по удалению подмодуля)

Ответ 2

Я не знаю, как долго это верно, но, конечно, даже в довольно старых git 1.8 подмодулях есть пульты. Итак, вы можете сделать

cd some-library   # this is entering the submodule
git remote -v     # just to see what you have; I guess origin only
git remote add myrepo git-URL-of-the-fork
git checkout -b my_new_idea
git push -u myrepo my_new_idea

Теперь подмодуль работает с вашей вилкой, а не с исходным репо. Вы можете сделать обычный push, pull, rebase и т.д. Когда ваш запрос на растяжение будет объединен, вы можете удалить пульт с обычным git remote remove myrepo. Конечно, все другие оговорки о работе с подмодулями применяются (например, вы должны зафиксировать изменение подмодуля в качестве нового коммита в супермодуле).