Cambie el submodule de git con su propio tenedor

Agregué un submodule a mi repository de git así:

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

Decidí que quería crear una bifurcación de esa biblioteca para hacer algunos ajustes. ¿Cómo puedo intercambiar ese submodule para que apunte a mi propio tenedor github?

Los submodules se almacenan en .gitmodules :

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

Si edita la url con un editor de text, debe ejecutar lo siguiente:

 $ git submodule sync 

Esto actualiza .git/config que contiene una copy de esta list de submodules (también podría simplemente editar la sección relevante [submodule] de .git/config manualmente)

Puede haber una manera de hacerlo con solo commands git , aunque el sistema de submodule parece un poco incompleto (por ejemplo, vea las instrucciones para eliminar un submodule )

No sé por cuánto time es cierto, pero incluso en los git 1.8 antiguos, los submodules tienen controles remotos. Entonces, puedes hacer

 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 

Ahora el submodule funciona con su fork en lugar del repository original. Puedes hacer push, pull, rebase etc. push, pull, rebase . Cuando tu request de extracción se fusiona, puedes eliminar el control remoto con el git remote remove myrepo normal. git remote remove myrepo . Por supuesto, todas las demás advertencias sobre el trabajo con submodules se aplican (por ejemplo, debe comprometer el cambio del submodule como una nueva confirmación en el supermodule).