如“ 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
签字人:凯尔·迈耶
除非--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
"