删除子模块后出错:以下路径被.gitignore文件忽略:

时间:2013-04-02 13:52:27

标签: git git-submodules

我删除子模块后出现此错误。有问题的路径不在我的.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 个答案:

答案 0 :(得分:2)

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

我的猜测是superrepo会自动忽略子模块中的所有文件,因为它们没有被跟踪。因此,如果配置中存在迷路[submodule]节,git会将路径添加为忽略模式。

答案 1 :(得分:1)

如“ Git is ignoring files that aren't in 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”的错误消息生成。

请参见commit c816385Kyle Meyer (kyleam)(2020年1月8日)。
(由Junio C Hamano -- gitster --commit 25794d6中合并,2020年2月5日)

submodule add:中止时显示'add --dry-run'stderr

签名人:Kyle Meyer

除非指定了--force,否则'submodule add'通过调用'git add --dry-run --ignore-missing'检查目标路径是否被忽略,如果调用失败,则以自定义“ {{ 1}}”消息(“ path is ignored”显示的内容略有变化)。

尽早中止而不是让下游的'git add'调用失败,是为了使该命令在克隆到目标路径之前退出。

但是,在极少数情况下,空运行调用由于除路径以外的其他原因而失败的原因-例如,由于先前存在的git add文件--显示“ { {1}}”错误消息隐藏了真正的失败原因

让我们从空运行中报告标准错误,而不是显示经过定制的“ index.lock”消息,以便为调用者提供有关不是由忽略路径引起的故障的更准确信息。

对于忽略的路径,这将导致错误消息中的以下更改:

ignored path

新的措词有点尴尬,因为“ ignored path”仅处理一个目标路径。

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

但是,这可能会隐藏不相关的失败消息(退出代码为1),因此似乎没有必要仅仅避免笨拙但仍然清晰的错误消息。

因此,您将收到一条更明确的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,而不是“ fatal:...

答案 2 :(得分:1)

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

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

$('.btn').click(function(e) {

  // only one div to be shown but can't be closed as well.
  $('.product-more').each(function(i, v) {
    $(this).removeClass('displayBlock');
    $(this).addClass('displayNone');
  })
 $(e.target).parent().next().toggleClass('displayNone displayBlock');

});

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

git submodule add C:\mysubmodule\

答案 3 :(得分:0)

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