快捷搜索: 王者荣耀 脱发

.gitignore 文件不生效问题 & 解决方法

问题

在 .gitignore 文件中已经写入了要忽略的文件和目录,git push 的时候还会出现在 push 的目录中,在GitHub上还是出现此类文件,用 git status 查看状态,想要忽略的文件还是显示被追踪状态。

tips: 这个文件的完整文件名就是 “.gitignore”,此文件没有其他后缀 .txt 等,且最前面有个 “.” 如果在创建 .gitignore 文件之前就 push了项目,后面即使写了.gitignore文件进行忽略,文件也不会起作用,Git 仍然会对所有文件进行管理。此问题可以简单理解成,Git 已经开始管理这些文件了,所以无法再通过过滤规则过滤它们。 gitignore 只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的。想要 .gitignore 文件起作用,必须要在这些文件不在 暂存区 中才可以,.gitignore 文件只是忽略没有被 staged(cached) 文件,对于已经被 staged 文件,加入 ignore 文件时一定要先从 staged 中移除,之后才可以被 ignore。

解决方法

先删除缓存(将所有文件变成 untracked 的状态),再进行git的提交

    git rm -r --cached .清除本地 git 缓存,改变成未track状态 git add .将文件提交至暂存区 git commit -m "清除git缓存,解决gitignore问题" git push提交至远程仓库

git库文件夹中文件的几种状态

    Untracked 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged。 Staged 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致 Unmodified 文件已经入库,未修改,即版本库中的文件内容与文件夹中完全一致。此类型的文件有两种去处,如果被修改变为Modified;如果使用 git rm 移出版本库,则成为Untracked文件。 Modified 文件已修改,仅是修改,并没进行其他操作。这个文件也有两个去处, 通过 git add 加入暂存 staged 状态;使用git checkout 则丢弃此修改,返回到 unmodified 状态,这个 git checkout 即从库中取出文件, 覆盖当前修改。
untracked 和 not staged的区别: untrack 表示是新文件,没有被add过,是为跟踪的意思。 not staged 表示 add 过的文件,即跟踪文件,再次修改此文件后就变成没有 add 的文件,就是没有暂存的意思。
经验分享 程序员 微信小程序 职场和发展