Git自动将子项目声明为子模块?

时间:2014-01-31 16:15:25

标签: git git-submodules git-subtree

我的项目位于'www'文件夹中。

在'www / vendor'中,我从GitHub克隆了其他项目。我只是克隆了它们,从未做过任何使它们成为子模块或子树的东西。

很多时候,我参与了这些子项目,贡献了上游等等。我只需要cd到'www / vendor / projectX'这样的目录并在那里使用Git commit,就好像它们是独立项目。然后我可以回到'www'并在那里进行提交,以确认子项目中的更改到我的主项目中。一切都很棒,很简单。

然后我将'www / vendor'移动到'www / php / vendor'。我做了git add php并提交了更改,现在我的所有'www / php / vendor / *'文件夹在远程服务器上都是空的。在我的机器上,文件仍在此处,但git status表示无需提交。

我不知道但是当我移动它们时,看起来所有子项目都被自动声明为子模块。但是我没有看到它的痕迹:没有.gitmodule,模块文件夹中没有任何内容。这就是我git rm时所得到的:

$ git rm php/vendor/projectX
error: the following submodule (or one of its nested submodules) uses a .git directory:
php/vendor/projectX

我错过了什么或者这是一个Git错误吗?我想回到我之前的工作方式,而不删除子项目的.git文件夹或使用子模块。

我一直在Windows中使用Git 1.8.4和1.8.5.2。

1 个答案:

答案 0 :(得分:1)

这是Git的默认行为。除了声明子模块之外,它不知道如何处理这些存储库。

您可以忽略保存其他Git存储库的路径。特别是如果使用包/依赖项管理器更新它们并将锁文件保存在根存储库中。