.gitignore 不生效的问题的解决办法

问题

在使用 git 进行版本控制的过程中发现,将想被忽略的文件 (文件夹) 配置到.gitignore 文件中后,实际修改了想被忽略的文件,调用 git status 查看时,仍然会提示提交这些文件。也就是说实际并没有被忽略

原因

原因是 git ignore 只会对不在 git 仓库中的文件进行忽略,如果这些文件已经在 git 仓库中,则不会忽略。所以如果需要忽略的文件已经提交到本地仓库,则需要从本地仓库中删除掉,如果已经提交到远端仓库,则需要从远端仓库中删除。删除.gitignore 文件才能实际生效。

解决

方案一:

  • 从远端仓库 clone 一份代码
  • 使用 git rm file/to/be/ignored -r 删除需要被忽略的文件
  • .gitignore 中配置需要被忽略的文件
  • git add . 然后 git commit ;再 git push 到远端服务器 
    这样保证远端服务器上没有需要被 Ignore 的文件,即使在本地修改这些文件,使用 git status 查看也不会再有提示了。

方案二:

直接对本地的仓库进行操作,首先要删除缓存

  • git rm -r –cached .
  • git add .
  • git commit -m “update  .gitigonre”

一个.gitignore 示例

对于使用 idea 进行开发的同学来说,常见的需要被忽略的文件有:

/target
/out
/classes
/checkouts
/.lein-*
/.env
*.iml
.idea
.DS_Store
*/target
.svn
.project
.settings
.classpath
logs
/log
/tmp
hotspot.log