别执行git rm -r --cached .
,这会把所有的缓存都清掉!laravel项目根目录下执行完后,所有文件都需要add一次才行:
不起作用原因
如果本地仓库文件已被跟踪,那么即使在 .gitignore 中设置了忽略,也不起作用
意思就是,如果想把已经在git仓库中的文件忽略掉,直接在.gitignore
中添加是不可以的,需要运行git rm -r --cached 路径/文件名
来先删除仓库的记录,想让哪个生效,删哪个缓存就好,之后在.gitignore
配置即可生效
其它
.gitignore作用
忽略掉一些不需要上传到git的文件,如:开发配置文件、插件文件等
规则
(1)空行不匹配任何文件;
(2)git 跟踪文件,而不是目录;
(3)在 .gitignore 文件中,每行表示一种模式;
(4)如果本地仓库文件已被跟踪,那么即使在 .gitignore 中设置了忽略,也不起作用。
(5).gitignore 文件也会被上传的到远程仓库,所以,同一个仓库的人可以使用同一个.gitignore 文件。
文件详细配置请参考:Git 开发必备 .gitignore 详解!
以下文章内容来自:.gitignore不生效问题解决方法
额外说明:git库所在的文件夹中的文件大致有4种状态
- Untracked:
未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.
- Unmodify:
文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改,
而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件
- Modified:
文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态,
使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改
- Staged:
暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态.
执行git reset HEAD filename取消暂存, 文件状态为Modified
Git 状态 untracked 和 not staged的区别
- untrack 表示是新文件,没有被add过,是为跟踪的意思。
- not staged 表示add过的文件,即跟踪文件,再次修改没有add,就是没有暂存的意思