【发布时间】:2014-01-22 15:20:21
【问题描述】:
我实际上是在尝试学习如何使用 git,包括 git submodule 子命令。
我已经设置了一个服务器,我可以使用 SSH 在其上托管、推送和拉取 git 存储库。
我在这台服务器上创建了一个主 git 存储库“Travail”,我想将我的所有项目作为子模块放入其中。
在我的 Travail 存储库中,我已经在 tools/libft 添加了我的一个项目作为子模块:
我能够开发这个子模块,推动和拉动它。
但是当我尝试添加另一个子模块(名为 fdf,来自我服务器上的 fdf.git)时,我遇到了以下问题:
git submodule add ssh://XXX.XXX.XXX.XXX:XXXXX/opt/git/fdf.git projets/fdf
'projets/fdf' 的 git 目录在本地找到,带有远程: 来源 ssh://git@XXX.XXX.XXX.XXX:XXXXXX/opt/git/fdf.git 如果你想重用这个本地 git 目录而不是从 ssh://XXX.XXX.XXX.XXX:XXXXXX/opt/git/fdf.git 使用“--force”选项。如果本地 git 目录不是正确的 repo 或者您不确定这意味着什么,请使用“--name”选项选择另一个名称。
projets/中其实没有子目录
我在另一个线程上读到我应该使用 git submodule sync 或编辑 .gitmodules 文件,其中我的子模块源存储库的 URL 可能已更改。
但是我的 .gitmodules 文件只包含关于我的第一个子模块(tools/libft)的信息,而不是关于 projets/fdf 的信息:
[submodule "tools/libft"]
path = tools/libft
url = ssh://git@XXX.XXX.XXX.XXX:XXXXX/opt/git/libft.git
作为一名法国学生,我可能会错过我所拥有的英文文档中的某些内容,但我搜索了一下,我真的不明白为什么会出现这个问题。
如果我能得到一个解决方案,我会很高兴,但只是一个解释也会有帮助。
【问题讨论】:
-
一个小的更正:它是“存储库”,而不是“存储库”。不是一个真正的答案,但如果项目彼此独立,那么每个项目都有自己的 repo 而不是子模块会更好。
-
谢谢,我更正了。我知道,但我想将我所有的工作收集在同一个仓库中,但作为单独的项目。当我从家到学校时,可以选择让我的整个工作保持更新,反之亦然(学习如何使用这些工具,我很好奇;))
-
好吧,好奇总是一个很好的理由! :) 这很奇怪。你确定你之前没有添加过子模块吗?
-
不在 Travail/ 中,而且我没有在 ~/ 中克隆 fdf.git 的问题。在 Travail/ 我没有找到 fdf 的痕迹。只是 libft :/
-
哦,等等,我查看了
/Travail/.git/modules/projets/并找到了fdf目录。这似乎不在工作树中,而是在较旧的提交中。它会产生问题吗?
标签: git git-submodules