44

我在我的 git repo 中添加了一个子模块,如下所示:

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

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

4

2 回答 2

58

子模块存储在.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系统似乎有点不完整(例如,请参阅删除子模块的说明

于 2012-07-24T18:42:40.450 回答
8

我不知道这是真的多久,但即使在相当老的 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

现在,子模块可以与您的 fork 一起使用,而不是原来的 repo。你可以做正常push, pull, rebase等。当你的拉取请求被合并时,你可以用 normal 删除遥控器git remote remove myrepo。当然,关于使用子模块的所有其他警告都适用(例如,您必须将子模块的更改作为超级模块中的新提交提交)。

于 2017-11-22T21:34:31.577 回答