未跟踪的被忽略文件仍然以git状态显示

时间:2019-07-17 09:02:47

标签: git

我知道有类似的问题,但是这些解决方案都不适合我,因此提出了一个新问题。

我有以下.gitignore部分:

#generated sources in tfliteparser/tflite
tfliteparser/tflite/
kernels/native_funcs.cpp

但是,当我运行git status时,文件和文件夹都会出现在“未跟踪的文件”部分:

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        ../.DS_Store
        kernels/native_funcs.cpp
        network_summary.dat
        tfliteparser/tflite/

我假设,由于这些对象位于未跟踪的部分中,因此它们从未添加到索引中,对吧?为什么它们会出现?

我尝试过的事情:

git rm --cached kernels/native_funcs.cpp

这给出了:

fatal: pathspec 'kernels/native_funcs.cpp' did not match any files

但是,该文件在那里。如果我ls,操作系统会看到它。 我也尝试过this。结果相同。

我知道一个事实,.gitignore文件已加载,因为如果我向其中添加network_summary.dat文件,它将被忽略。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

使用../.DS_Store,我看到当前目录不是存储库的根目录。您的忽略模式包含斜杠,因此它们仅在您的.gitignore所在的目录级别匹配。如果.gitignore位于回购的根源,则您的模式不匹配。

要使它们匹配,请在子目录名称前加上星号或为它们加上前缀:

# .gitignore
<subdir>/tfliteparser/tflite/
*/kernels/native_funcs.cpp

$ git rm --cached kernels/native_funcs.cpp
fatal: pathspec 'kernels/native_funcs.cpp' did not match any files

这意味着kernels/native_funcs.cpp不在索引中(该文件未被git add编辑)。 git rm --cached仅从索引中删除,而不从文件中删除。