12

删除子模块后出现此错误。有问题的路径不在我的 .gitignore 文件中,我的 .git/info/exclude 文件中也没有任何相关内容。我没有 .gitignore_global 文件。为什么 git 试图忽略这条路径,我该如何解决这个问题?

The following path is ignored by one of your .gitignore files:
MyTest/MyTest/lib/submodules/ScreenRecorder
Use -f if you really want to add it.

这是我要执行的命令:

git submodule add https://github.com/kishikawakatsumi/ScreenRecorder.git MyTest/MyTest/lib/submodules/ScreenRecorder

这是从我的 git repos 根目录执行的。

4

4 回答 4

2

删除我的相关[submodule]节为我.git/config解决了这个问题。

我猜超级仓库会自动忽略子模块中的所有文件,因为它们没有被跟踪。因此,如果[submodule]您的配置中有一个杂散的节,git 会将路径添加为忽略模式。

于 2013-05-13T12:27:28.310 回答
2

如“ Git 忽略不在 gitignore 中的文件”中所述

从 Git 收到此错误消息的另一个原因是在执行git submodule add命令时,前一个git命令已崩溃并离开锁定文件
(例如,当您使用包含git命令且您没有注意到崩溃的自定义脚本时,可能会发生这种情况) .

在这种情况下,像“”这样的错误消息The following path is ignored by one of your .gitignore files不是很有表现力。

在 Git 2.26(2020 年第一季度)中,改进了“”的错误消息生成git submodule add

请参阅Kyle Meyer ( ) 的提交 c816385(2020 年 1 月 8 日(由Junio C Hamano 合并 -- --提交 25794d6中,2020 年 2 月 5 日)kyleam
gitster

submodule add--dry-run:中止时显示“添加”标准错误

签字人:凯尔·迈耶

除非--force指定,否则 ' submodule add' 通过调用 ' ' 检查目标路径是否被忽略git add --dry-run --ignore-missing,如果调用失败,则使用自定义的 " path is ignored" 消息中止(' ' 显示的轻微变体git add)。

提前中止而不是让下游 ' git add' 调用失败,以便命令在克隆到目标路径之前退出。

但是,在极少数情况下,由于路径被忽略以外的原因,试运行调用失败(例如,由于预先存在的index.lock文件),显示“ ignored path”错误消息会隐藏失败的真正根源

让我们报告试运行的标准错误,而不是显示定制的“ ignored path”消息,以便为调用者提供有关不是由于忽略路径引起的故障的更准确信息。

对于忽略路径的情况,这会导致错误消息发生以下变化:

The following [-path is-]{+paths are+} ignored by one of your .gitignore files:
<destination path>
Use -f if you really want to add [-it.-]{+them.+}

新的措辞有点尴尬,因为 ' submodule add' 只处理一个目标路径。

或者,当退出代码为 1(由于忽略路径导致失败的预期状态)时,我们可以继续使用定制消息,并为所有其他非零退出传递标准错误。

然而,这可能会隐藏共享退出代码 1 的不相关故障的消息,因此似乎不值得仅仅为了避免更笨重但仍然清晰的错误消息而做。

因此,您将收到更明确的fatal:...错误消息,其中提到index.lock, 而不是 " ignored path"

于 2020-02-06T17:04:30.110 回答
2

我发现如果您尝试添加本地文件夹并使用 Windows 样式的反斜杠而不是 Linux 样式的正斜杠作为路径,Windows 版 Git 也会抛出此错误。

例如,以下命令将抱怨路径在 .gitignore 中被忽略(即使您没有 .gitignore 文件):

git submodule add C:\mysubmodule\

解决方案是更改为正斜杠:

git submodule add C:/mysubmodule/
于 2020-03-01T12:07:03.493 回答
0

删除现有.gitignore文件并创建一个对我有用的新文件。

于 2016-10-24T15:16:31.160 回答