gitignore失效问题

2018-10-17  本文已影响0人  天很清

一般项目下载下来都会有 .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 可以在本地随便更改了

上一篇 下一篇

猜你喜欢

热点阅读