问题出现的场景
有时候我们在项目初始化提交时,将某个无用文件提交到了远程仓库中。之后,在整理项目时,你希望将远程仓库中的这个无用文件添加到. gitignore
忽略文件中,从而令其修改不会被git
追踪到。然而,事与愿违,你会发现,一旦这个文件被改动(几乎都是由于项目编译引起的改动),git总能追踪到他,及时已经正确的被添加到. gitignore
文件中
产生问题的原因
这是因为我们误解了. gitignore
文件的用途,该文件只能作用于Untracked Files
,也就是那些从来没有被git
记录过的文件(自添加以后,从未add
以及commit
过的文件)。
之所以. gitignore
的规则不生效,是因为那份无用文件曾经被git
记录过,因此. gitignore
对它们完全无效。
从根源解决问题
了解了原因以后,我们需要做的就很明确了:
- 从 Git 的数据库中删除对于该文件的追踪
- 把对应的规则写入 .gitignore,让忽略真正生效
- 提交+推送
具体执行
强制忽略
使用命令git update-index --assume-unchanged <files>
来强制忽略指定文件,命令执行后,在使用git status
时,被强制忽略的文件就不会出现在工作区了。当需要取消强制忽略时,可以使用git update-index --no-assume-unchanged <files>
命令来达到目的。