【问题标题】:Git submodule completely refusing to cooperateGit子模块完全拒绝合作
【发布时间】:2017-07-01 17:52:01
【问题描述】:

我有两个存储库。 BigRepo 和 SmallRepo。

我想让 SmallRepo 成为 BigRepo 的子模块。

我做了什么?

我首先克隆了 BigRepo。

然后我跑了

git submodule add git://github.com/Karlovsky120/SmallRepo.git submodules\SmallRepo

成功将 SmallRepo 克隆到 BigRepo。

现在我运行 git status 并得到:

new file: .gitmodules
new file: submodules/SmallRepo

如果我运行git submodule init,它会失败并显示以下消息:

fatal: No url found for submodule path 'submodules/SmallRepo' in .gitmodules

(我知道它已经初始化了,但是网址就在那儿)。

我还尝试提交并推送更改,然后删除本地存储库以再次克隆它,但它会失败并显示相同的消息。

我知道当我推送更改时,子模块出现在Web界面中,但我无法单击它。我不知道这是否是正常行为。

我查看(并遵循)了一堆教程,但我不知道为什么会发生这种情况。它应该是超级简单的,但最基本的例子是失败的。

我做错了什么?

编辑:

.gitmodules 的内容是:

[submodule "submodules\\SmallRepo"]
    path = submodules\\SmallRepo
    url = git://github.com/Karlovsky120/SmallRepo.git

【问题讨论】:

  • 'cat .gitmodules' 的输出是什么
  • 我猜你想要内容?见编辑。 (cat 不是我的 Windows PC 上可识别的命令)
  • 我按照你的步骤,对我来说没问题。似乎是特定于 Windows 的?
  • 打开 git bash 并 cat 文件内容

标签: git github git-submodules


【解决方案1】:

如果您没有路径限制,那么以下应该可以完成工作:

$ git submodule add git://github.com/chenrui333/config-repo.git SmallRepo
$ git submodule init


$ cat .gitmodules 
[submodule "SmallRepo"]
    path = SmallRepo
    url = git://github.com/chenrui333/config-repo.git

$ ls SmallRepo/
README.md test

我只是使用了一级路径,我认为这可能是原因。

[更新]

原来是路径问题,用修改后的脚本更新:

$ git submodule add git://github.com/chenrui333/config-repo.git SmallRepo/config
$ git submodule init


$ cat .gitmodules 
[submodule "SmallRepo/config"]
    path = SmallRepo/config
    url = git://github.com/chenrui333/config-repo.git

$ ls SmallRepo/config/
README.md test

【讨论】:

  • 不是,但它给了我一个想法。看来我使用了错误的斜线 -> \` 而不是 /
  • 再看你的问题,是的,这应该是submodules\\SmallRepo而不是Windows上下文中的submodules\SmallRepo
  • 那个,或者另一个方向的斜线。
猜你喜欢
  • 2014-11-15
  • 2018-08-17
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多