git状态仍然显示DS_Store文件,尽管它在忽略列表中。

3
在Git的忽略列表中,我有以下内容:
build/**
.DS_Store

更新了一些文件后,git status 显示:

modified:   db/main/res/.DS_Store

我没有想到会显示.DS_Store被修改,因为它在忽略列表中。工作目录或项目根目录是~/myproj

如何解决这个问题?


在你的gitignore中,.DS_Store 只会应用于根目录。我不确定它是如何工作的,但也许可以尝试使用 **/.DS_Store - scrowler
正如下所述,通配符不必要。 ".DS_Store"将阻止文件在所有目录中被跟踪。 - tomp
1个回答

7
在你的.gitignore文件中添加".DS_Store"条目将防止Git跟踪新的.DS_Store文件,当你运行git add时。
在你的情况下问题似乎是在包含.DS_Store到.gitignore文件之前它已经被Git跟踪了。
所以你需要做的就是用git rm --cached db/main/res/.DS_Store从仓库中删除.DS_Store文件,然后它就不会再被跟踪了。
(根据Edward的评论添加--cached)。

你能再重申一下(相当不错的!)关于如何删除我的代码库中的所有.DS_Store文件的答案吗?可惜,这样的文件有很多,并且由于它们是隐藏的,逐个列出并逐个删除将在大型项目上变得繁琐。我相信肯定有一个简单的git命令可以解决这个问题吧? - Motti Shneor
谢谢Motti,在这种情况下,需要在子目录中运行git rm命令。可以使用以下命令:find . -name .DS_Store -print0 | xargs -0 git rm -f --cached --ignore-unmatch(参见https://dev59.com/i3VD5IYBdhLWcg3wDHDm)。然后运行`git commit`将更改提交到仓库。 - tomp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接