一般项目下载下来都会有 .gitignore
文件,不需要特别设置,但当你在开发中,想忽略某个文件时,就需要把这个文件路径添加到.gitignore
文件中,但可能有时候可以成功忽略有时候又不可以,这是为什么呢?
加入.gitignore
中的文件路径是否生效,关键在于这个路径下的文件性质,是不是untracked
。
什么是untracked
的文件?在本地一个新建的文件,未执行git add
之前就是untracked
(当然,前提是编辑器不会在创建文件时自动帮你执行git add
),那么这个新建的文件直接将路径添加到.gitignore
中,即可生效。
但如果一个文件已经执行过git add
或者 git commit
,或者不是本地新建文件,加入.gitignore
中就无法生效,需要重新恢复untracked
状态才行。
如果恢复一个文件为untracked
,很简单,删除,然后在本地新建(记得提前备份),可以使用
git rm --cached <file>
删除,这个时候文件就是untracked
。
但通常本地文件untracked
了,但远程同名文件还是tracked
,一更新代码就覆盖了,这个就需要把远程的tracked
的文件删掉。
下面举个例子:
远程文件库front
根目录下local.js
,代码下载下来也有个/d/front/local.js
,这个时候你可能需要修改local.js
做个性化配置,/d/front/.gitignore
文件中没有添加local.js
,但你希望git
能忽略local.js
。
// 在项目根目录下,首先copy一份local.js
zy@DESKTOP-MIQKPJL MINGW64 /d/front/local.js
$ cp local.js local_default.js
// 编辑 .gitignore , 将 local.js路径加进入
$ vim .gitignore (不熟悉vim,可在编辑器中编辑)
// 删除本地local.js
$ git rm --cached lcoal.js
// 提交修改,删除远程local.js
$ git status
$ git add .
$ git commit -m "add local.js to gitignore"
$ git push
// 重新pull下代码
$ cp local_default.js local.js
// 现在,这个新建的local.js 可以在本地随便更改了