若检查发现修改中仍然有.DS_Store文件,则可能原因是在早期的提交中就已将.DS_Store文件提交到repository了。如果一个文件已经被提交,那么就算这个文件已经被写到gitignore文件中,它的修改仍然会被追踪到。
所以我们需要手动将repository中的.DS_Store文件移除,可以使用以下命令移除:
git rm --cached .DS_Store
//移除当前文件夹下的.DS_Store文件
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
//移除文件夹下的所有.DS_Store文件
通过这个问题,我发现git 这个工具,我只是会个皮毛。
关键问题是,之前这个git rm --cached
这个命令我都没见过
这个让我感觉到很慌
然后我就复习了一下git的所有的用法
非常好用的教程
但是我还是不明白git rm --cached
这个cached 是什么意思
我们看一下官方的解释:
–cached
Use this option to unstage and remove paths only from the index. Working tree files, whether modified or not, will be left alone.
但是,我又不知道index
是什么意思,难道是索引吗?索引是什么鬼?
然后我又找到
暂存区:英文叫stage, 或index。一般存放在 “.git目录下” 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
如果,我在创建ignore文件之间,我就把我的项目先放在暂存区,然后我再推到版本库,
当我创建我ignore之后,我想把某个文件忽略掉,以后不要把这个文件的变化同步到远程仓库,
但是,当我上面都做的时候,我发现,远程仓库的一些我不想要的文件,依然存在,这是为什么了?
暂存区依然还存在这个文件,只要把这个文件给删除了,然后commit,然后再push,远程仓库的文件就没了