未跟踪的文件仍以git状态显示

未跟踪的文件仍以git状态显示,git,Git,我已使用.git/info/exclude取消了对某些文件夹和文件的跟踪: doc *.txt doc/*.txt doc/somefile.txt 但git status表示仍在跟踪: $ git st # On branch dev # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- &l

我已使用.git/info/exclude取消了对某些文件夹和文件的跟踪:

doc
*.txt
doc/*.txt
doc/somefile.txt
但git status表示仍在跟踪:

$ git st
# On branch dev
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   doc/somefile.txt
我使用的是git版本1.8.1.5

因此,我得出结论,我可能误解了某些事情或做错了某些事情。有什么想法吗?

由于当前正在跟踪文件,您需要告诉git在忽略它们之前先忘掉它们


git rm--缓存的doc/somefile.txt

由于您在本地忽略存储库中的文件,因此需要告诉git您正在忽略它们

git update-index --assume-unchanged <files to forget>
git更新索引--假定未更改

您需要
git rm--cached
。这不会从您的工作目录中删除文件,但会将其从
git缓存中删除
,因此它现在将被包含在。
gitignore

不,这将删除文件,而不是忽略它们。哦,我的糟糕。我忘记了
--cached
标志。他没有使用.gitignore,他使用的是.git/info/exclude,这是本地存储库排除文件。啊,没错。不过他说的是“untrack”而不是“ignore”,所以这取决于他试图对文件做什么。这是正确的答案@lalebarde,我可以补充一点,您没有
取消跟踪这些文件,而是忽略了它们。它们已经被跟踪,因此你必须遵循@Abizern的建议,让git忘记它们。检查以了解为什么
updateindex
是比
rm--cached
更好的解决方案该命令从来就不是用来解决此类问题的,git开发人员认为这样使用它是个坏主意。这是为了在某些情况下提高性能。Git会将此视为一种承诺,即文件在其下面不会被更改,但在本例中,这根本不是真的。完成此操作后使用
git stash
,可能会导致本地更改丢失。看到周围的线了吗。在其他情况下也可能存在此问题。重复:
git update-index --assume-unchanged <files to forget>