用自己的叉子交换git子模块

我添加了一个子模块到我的git repo中,像这样:

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

我决定要创建一个该库的分支来做一些调整。 我怎样才能交换该子模块,以便它指向我自己的github fork?


子模块存储在.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 (您也可以手动编辑.git/config的相关[submodule]部分)

尽管submodule系统似乎有点不完整,但可能只有git命令可以做到这一点(例如,请参阅删除子模块的说明)


我不知道这是多久,但当然,即使在相当古老的git 1.8 submodules中也有遥控器。 所以,你可以做

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 。 当然,关于使用子模块的所有其他警告都适用(例如,您必须将子模块的更改提交为超级模块中的新提交)。

链接地址: http://www.djcxy.com/p/16463.html

上一篇: Swap git submodule with own fork

下一篇: How do I add files in Git to the path of a former submodule?