git 里的gitignore不生效的解决方案

gitignore文件可以用来忽略某些不需要放在git里的文件,但是经常我们在gitignore里写了忽略语句,但是不生效

原因1. 语法错误,解决方案:再次检查语法是否写的正确, 部分语法参照下面

  • 空格不匹配任意文件,可作为分隔符,可用反斜杠转义
  • 开头的文件标识注释,可以使用反斜杠进行转义
  • ! 开头的模式标识否定,该文件将会再次被包含,如果排除了该文件的父级目录,则使用 ! 也不会再次被包含。可以使用反斜杠进行转义
  • / 结束的模式只匹配文件夹以及在该文件夹路径下的内容,但是不匹配该文件
  • / 开始的模式匹配项目跟目录
  • 如果一个模式不包含斜杠,则它匹配相对于当前 .gitignore 文件路径的内容,如果该模式不在 .gitignore 文件中,则相对于项目根目录
  • ** 匹配多级目录,可在开始,中间,结束
  • ? 通用匹配单个字符
  • [] 通用匹配单个字符列表

常用匹配示例:

  • bin/: 忽略当前路径下的bin文件夹,该文件夹下的所有内容都会被忽略,不忽略 bin 文件
  • /bin: 忽略根目录下的bin文件
  • /*.c: 忽略 cat.c,不忽略 build/cat.c
  • debug/*.obj: 忽略 debug/io.obj,不忽略 debug/common/io.obj 和 tools/debug/io.obj
  • **/foo: 忽略/foo, a/foo, a/b/foo等
  • a/**/b: 忽略a/b, a/x/b, a/x/y/b等
  • !/bin/run.sh: 不忽略 bin 目录下的 run.sh 文件
  • *.log: 忽略所有 .log 文件
  • test.csproj: 忽略当前路径的 test.csproj 文件

原因2 缓存 gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的. 解决方案: 清理缓存

先后执行 ,记住有点

git rm -r --cached .
git add .
git commit -m ‘update .gitignore‘

如果你写的语法没有错误,那么你会在控制台里看到删除那些忽略文件,如果没有,那就可能是语法错误

原文地址:https://www.cnblogs.com/fancyblogs/p/12299731.html

时间: 2024-08-03 22:28:53

git 里的gitignore不生效的解决方案的相关文章

Git忽略规则.gitignore规则生效

规则很简单,不做过多解释,但是有时候在项目开发过程中,突然心血来潮想把某些目录或文件加入忽略规则,按照上述方法定义后发现并未生效,原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的.那么解决方法就是先把本地缓存删除(改变成未track状态),然后再提交: 1 git rm -r --cached . 2 git add . 3 git commit -m 'update .gitignore' 参考链接:htt

如何在 Git 里撤销(几乎)任何操作

任何版本控制系统的一个最有的用特性就是"撤销 (undo)"你的错误操作的能力.在 Git 里,"撤销" 蕴含了不少略有差别的功能. 当你进行一次新的提交的时候,Git 会保存你代码库在那个特定时间点的快照:之后,你可以利用 Git 返回到你的项目的一个早期版本. 在本篇博文里,我会讲解某些你需要"撤销"已做出的修改的常见场景,以及利用 Git 进行这些操作的最佳方法. 撤销一个"已公开"的改变 场景: 你已经执行了 git

MVC项目中ExecutionTimeout不生效的解决方案

我们做web服务器端开发时,经常会遇到一个需求场景,因为某些耗时处理造成页面的响应处理时间超长,技术角度就想能否给页面处理程序一个指定的超时时间,服务端处理程序执行时间超过这个指定的超时时间则中断处理,直接返回响应,以防止服务器端宿主的吞吐队列堆积,造成全站瘫痪. asp.net中,有这么一个方便的东西,他就是ExecutionTimeout . 相关背景 ExecutionTimeout 属性(http://msdn.microsoft.com/zh-cn/library/vstudio/sy

房间里有三盏灯问题解决方案

http://blog.csdn.net/pipisorry/article/details/36014835 question:房间里有三盏灯,屋外有三个开关,分别控制这三盏灯,只有进入房间,才能看到哪一个电灯是亮的.请问如何之进入房间一次,就能指明哪一个开关控制哪一个灯? 小解: 三个灯: 打开两个灯, 过一会关闭一个. 进去看亮着的, 不亮但是发热的,不亮也不发热的 .区别出来. 四个灯: 打开两个灯, 过一会关闭一个, 然后打开一个新的灯, 不亮但是发热的, 亮但是 不发热的, 亮而且发

Git忽略规则(.gitignore配置)不生效原因和解决

参考文章:https://www.cnblogs.com/kevingrace/p/5690241.html 第一种方法: .gitignore中已经标明忽略的文件目录下的文件,git push的时候还会出现在push的目录中,或者用git status查看状态,想要忽略的文件还是显示被追踪状态. 原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的, 这时候我们就应该先把本地缓存删除,然后

git .gitignore不生效

原因是.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的. 解决方法: 1.先把规则写好,然后把规则对应的文件删了,然后再提交,然后再把删的文件放回来,这样本地就不会再提交这个文件,然后服务上被忽略的文件还需要手动再上传一次. 2.就是先把本地缓存删除(改变成未track状态),然后再提交(文件忽略了,在你本机不会再上传,同时服务器上相关的文件也会被删除,需要你用其他方法再上传一次,然后服务器上就也忽略了): git

git中使用.gitignore文件

在进行协作开发代码管理的过程中,常常会遇到某些临时文件.配置文件.或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push,这样会引起开发上的不便. Git可以很方便的帮助我们解决这个问题,那就是建立项目文件过滤规则. git中提供两种过滤机制,一种是全局过滤机制,即对所有的git都适用:另一种是针对某个项目使用的过滤规则.个人倾向于第二种. 以我的一个项目为例,该项目用.net开发,.config文件.包括生成的bi

git中使用gitignore

在进行协作开发代码管理的过程中,常常会遇到某些临时文件.配置文件.或者生成文件等,这些文件由于不同的开发端会不一样,如果使用git add . 将所有文件纳入git库中,那么会出现频繁的改动和push,这样会引起开发上的不便. Git可以很方便的帮助我们解决这个问题,那就是建立项目文件过滤规则. git中提供两种过滤机制,一种是全局过滤机制,即对所有的git都适用:另一种是针对某个项目使用的过滤规则.个人倾向于第二种. 以我的一个项目为例,该项目用.net开发,.config文件.包括生成的bi

.gitignore不生效的解决办法

有时候.gitignore会不生效,那是因为如果一个文件已经被git追踪了,则它还是会继续被追踪,只要把git的缓存清掉,就可以了,命令如下: git rm -r --cached . git add . git commit -m 'clean cache' 原文地址:https://www.cnblogs.com/zuxiaoyuan/p/8981602.html