Git子模块被忽略

时间:2018-10-11 14:02:37

标签: git-submodules gitignore

当我尝试通过添加子模块

git submodule add git@domian:repo.git contact

我收到以下消息:

  

以下路径被您的.gitignore文件之一忽略:

     

联系人

     

如果真的要添加-f,请使用-f。

这是我的.gitignore

# Ignore everything
*

# But not these files:
!*.py
!*.md
!*.gitignore
!.gitmodules
!contact/

使用建议的-f选项可以解决此问题,但是我很好奇为什么!contact/中的.gitignore条目不能缓解问题。

2 个答案:

答案 0 :(得分:0)

在您的特定情况下,我没有遇到该错误(我的git版本为2.21.0.windows.1)。

尽管我尝试在父存储库之外添加子模块时确实遇到了该错误(显然不支持):

$ git submodule add https://github.com/user/repo ../repo
The following path is ignored by one of your .gitignore files:
../repo
Use -f if you really want to add it.

最好的猜测是它是一个错误...因此在您的!contact/中添加.gitignore并不能解决问题,因为它实际上并不是引起问题的.gitignore

您有什么git版本?您可以下载source code for your particular version,搜索错误消息(例如v2.21中的here it is),并跟踪代码以找出实际出了什么问题。

答案 1 :(得分:0)

子模块由gitlink (a special entry 160000 in the Git repository index)和.gitmodules中的远程URL +路径组成。

因此,排除!contact/仍会忽略gitlink“ contact”(它不是文件夹contact/,而是特殊的“ 文件”)

这样做会更好,并允许git submodule add继续进行:

!contact

如果还有其他原因仍会阻止git submodule add,则next Git 2.26 (Q1 2020) will provide a more helpful error message