Подкатегория git с собственной вилкой
Я добавил подмодуль в мой репозиторий git следующим образом:
$ git submodule add git://github.com/user/some-library some-library
Я решил, что хочу создать вилку этой библиотеки, чтобы выполнить некоторые настройки. Как я могу поменять этот подмодуль так, чтобы вместо этого он указывал на мою собственную вилку github?
Ответы
Ответ 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
. Конечно, все другие оговорки о работе с подмодулями применяются (например, вы должны зафиксировать изменение подмодуля в качестве нового коммита в супермодуле).