我知道有类似的问题,但是这些解决方案都不适合我,因此提出了一个新问题。
我有以下.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
文件,它将被忽略。
有什么想法吗?
答案 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
仅从索引中删除,而不从文件中删除。