关于 .gitignore 不生效问题
in Linux with 0 comment

关于 .gitignore 不生效问题

in Linux with 0 comment

原因

当我们用git时常常会习惯把我们不想上传到远程代码库中的一些本地文件(夹)放在一个叫做 .gitignore 的文件中,例如常见的本地build文件夹,一些IDE如 Intellig , Eclipse 的项目管理文件,但有些时候我们会遇到这样的问题:放入 gitignore 文件夹中的文件却还是被 git index, 当你通过 git status` 显示文件状态时,他们并没有被忽略。

问题场景

当你在 git 库中编写某些代码文件,并已经stage该文件之后,你发现某个文件你不想用了,想在以后的改变中忽略它。然后你再你的 .gitignore 文件中加入该文件名,结果它并没有被忽略。
当你从远程代码库中 git clone
一份代码中本地并做些修改, build ,然后通过 git add .** 等stage了这些改变,当你通过 git status
查看状态时发现不小心把 build/ 文件夹给 add 进来了。于是你在 .gitignore 文件中加入了 build/ ,但发现并不起作用。

根本原因

**.gitignore 文件只是 ignore 没有被 staged(cached) 文件,对于已经被 staged 文件,加入 ignore 文件时一定要先从 staged 移除。

解决办法

因此,要想用 gitignore 忽略文件,必须先把它们从 staged 中移除:
commit 你已有的改变,保存当前的工作。

git rm --cached file/path/to/be/ignored。
git add .
git commit -m "fixed untracked files"
Responses
icon_mrgreen.gificon_neutral.gificon_twisted.gificon_arrow.gificon_eek.gificon_smile.gificon_confused.gificon_cool.gificon_evil.gificon_biggrin.gificon_idea.gificon_redface.gificon_razz.gificon_rolleyes.gificon_wink.gificon_cry.gificon_surprised.gificon_lol.gificon_mad.gificon_sad.gificon_exclaim.gificon_question.gif