Swap git submodule with own fork
I added a submodule to my git repo like this:
$ git submodule add git://github.com/user/some-library some-library
I've decided I want to create a fork of that library to do some adjustments. How can i swap that submodule so that it points to my own github fork instead?
The submodules are stored in .gitmodules
:
$ cat .gitmodules
[submodule "ext/google-maps"]
path = ext/google-maps
url = git://git.naquadah.org/google-maps.git
If you edit the url
with a text editor, you need to run the following:
$ git submodule sync
This updates .git/config
which contains a copy of this submodule list (you could also just edit the relevant [submodule]
section of .git/config
manually)
There might be a way to do it with only git
commands, although the submodule
system seems a bit incomplete (eg see the instructions to remove a submodule)
I don't know how long it is true, but certainly even in rather old git 1.8 submodules have remotes. So, you can do
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
Now the submodule work with your fork instead of the original repo. You can do normal push, pull, rebase
etc. When your pull request is merged, you can remove the remote with normal git remote remove myrepo
. Of course, all other caveats about working with submodules apply (eg, you have to commit the change of the submodule as a new commit in the supermodule).
上一篇: git忽略一个目录,就像它不存在一样
下一篇: 用自己的叉子交换git子模块