1

所以我有一个带有一些子模块的项目。在我今天尝试使用 Visual Studio git 工具之前,所有这些都非常有效。我试图在那里提交一个子模块。从那以后我在网上读到 vs git 工具不能正确支持子模块。

所以看起来我有点乱,我不确定如何解决它。

当我执行 git commit --dry-run 我得到这个:http ://db.tt/CRKbC5Gt 我 确实在 Memflex 子模块中更改了这些测试,但它们不应该被检入主项目。

子模块本身仍然有效,我已经检查并在 github 上检查过,一切似乎都很好。

所以我的问题在于包含项目现在似乎对子模块感到困惑。即使它具有 .gitmodules 中列出的子模块

如果我浏览到子模块,它仍然显示它是一个子模块,因为它具有子模块的正确分支,如下所示:http ://db.tt/sTvQQ9qY

如果我使用乌龟 git,它会尝试签入我从 Visual Studio 签入的子模块的每个文件,如下所示:http ://db.tt/rtX9rz6r

总而言之:大多数事情似乎仍然有效,所有子模块似乎都按预期工作。唯一的问题是包含子模块的主项目现在尝试签入所述子模块中的所有文件。

我尝试使用 git submodule init 没有运气,据我所知它什么也没做。


更新:我看到主项目所在的 Assembla 发生了什么:http: //db.tt/uscTJ9MB

我想我在这里做点什么!只有我从视觉签入的项目得到了这个目录以及子模块

4

3 回答 3

2

启动 git 1.9.x/git2.0 (Q2 2014),并提交 cbaeafc,斜杠或没有斜杠将不再有任何区别:

允许“ git cmd path/”,当 ' path' 是子模块绑定到顶级工作树的位置时,匹配 ' path',尽管有额外和不必要的斜杠。

因此,您将无法错误地将子模块内容添加到父 repo 中(迫使您git add使用 a取消该错误git rm --cached -rf)。

于 2014-03-02T17:41:50.930 回答
1

当您使用git add <path-to-submodule>/不同于git add <path-to-submodule-without-slash>

在第二种情况下,git 仅开始跟踪目录,了解它实际上是对子模块的引用。在第一种情况下,它认为您想要跟踪文件夹的所有内容作为repo 的一部分。

于 2013-06-26T13:27:09.433 回答
0

我最终从我的 Lib 目录运行 git rm --cached -rf Memflex/ ,如下所示:http ://db.tt/E0SejkDw

这删除了目录但保留了子模块,因此在神奇的福雷斯特中一切都再次快乐。

于 2013-06-26T12:42:48.353 回答