【发布时间】:2015-01-23 17:38:36
【问题描述】:
我有一个远程 repo 项目,它是我项目中的一个子模块。我分叉了那个远程项目,删除了旧的子模块,然后尝试添加我的分叉副本。这不起作用。
我所做的是:
git submodule deinit path/to/sub
git rm /path/to/sub
git push origin mybranch
然后
git submodule add url_of_forked_project_in_my_repo path/to/sub
我收到一些关于 repo 是本地的奇怪消息,我应该使用 --force 或 --name,尝试其中任何一个的最终效果是我的本地分支不会随着我所做的任何更改而更新,并且引用仍然是旧的子模块 HEAD。
消息是:
'path/to/sub' 的 git 目录在远程本地找到: 来源 git://github.com/SomeoneElse/project 如果你想重用这个本地 git 目录而不是从 git@github.com:myrepo/project.git 使用“--force”选项。如果本地 git 目录不是正确的 repo 或者您不确定这意味着什么,请使用“--name”选项选择另一个名称。
如果我使用 --force 选项,我可以获取子模块,但引用似乎没有更新,并且我在主项目的子模块中所做的更改不会传播到任何地方:这是什么本地的意思吗?
无论如何,我只想要一个正常运行的 mill 子模块,在我的主项目副本中更新会导致引用发生变化等等。
任何帮助将不胜感激。
【问题讨论】:
-
看看这个:stackoverflow.com/questions/913701/… 也许您可以通过手动编辑存储库根目录中的 .gitmodules 文件来解决问题。
-
这确实是我最终做的。很高兴知道我不是唯一使用这种方法的人!
-
不回答,以防有人有更好的解决方案。如上所述,我编辑了 .gitmodules 文件以指向正确的存储库。提取时,我团队中的其他人必须
git submodule sync才能使所有内容都运转起来。