.gitignore忽略文件语法规则快速入门,附失效问题解决方案
第四章 Git忽略文件.gitignore规则
1. gitignore忽略语法
| 符号 | 解释 | 
|---|---|
| # | 表示此为注释,将被Git忽略 | 
| *.a | 表示忽略所有 .a 结尾的文件 | 
| !lib.a | 表示但 lib.a除外 | 
| /TODO | 表示仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO | 
| build/ | 表示忽略 build/目录下的所有文件,过滤整个build文件夹; | 
| /mtk/ | 表示过滤整个文件夹 | 
| doc/*.txt | 表示会忽略 doc/notes.txt,但不包括doc/server/arch.txt | 
| bin/: | 表示忽略当前路径下的bin文件夹下的所有内容,但不忽略 bin 文件夹 | 
| /*.c: | 表示忽略 cat.c,不忽略build/cat.c,即忽略当前目录下的所有.c文件子目录下的.c不忽略 | 
| **/foo:  | 表示忽略 /foo,a/foo,a/b/foo等即忽略所有目录下的foo子目录 | 
| a/**/b: | 表示忽略 a/b,a/x/b,a/x/y/b等 | 
| !/bin/run.sh | 表示不忽略bin目录下的run.sh文件 | 
| !.gitignore | 不忽略 .gitignore 文件 | 
| fd1/* | 忽略目录 fd1 下的全部内容,不管是根目录下的 /fd1/目录,还是某个子目录/child/fd1/目录,都会被忽略; | 
| /fd1/* | 忽略根目录下的 /fd1/目录的全部内容; | 
2. .gitignor忽略规则查看
如果你发现.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:
git check-ignore -v HelloWorld.class
.gitignore:1:*.class  HelloWorld.class(结果)
可以看到HelloWorld.class匹配到了我们的第一条*.class的忽略规则所以文件被忽略了。
3. 注意事项
-  git对于.ignore配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效。 
-  如果你不慎在创建.gitignore文件之前就push了项目,那么即使你在.gitignore文件中写入新的过滤规则,这些规则也不会起作用,因为.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。此时解决方法如下: -  git清除本地缓存(改变成未track状态),然后再提交 git rm -r --cached . git add . git commit -m 'update .gitignore' git push -u origin master
 
-  
-  一定要养成在项目开始就创建.gitignore文件的习惯,否则一单push,处理起来会非常麻烦。 
4. 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,就是没有暂存的意思
 
5. 前端.gitignore推荐配置
# 总是被忽略的扩展  
*.bak  
*.patch  
*.diff  
*.err  
# git冲突合并的临时文件  
*.orig  
*.log  
*.rej  
*.swo  
*.swp  
*.zip  
*.vi  
*~  
*.sass-cache  
*.tmp.html  
*.dump  
# 操作系统或编辑器文件夹  
.DS_Store  
._*  
.cache  
.project  
.settings  
.tmproj  
*.esproj  
*.sublime-project  
*.sublime-workspace  
nbproject  
thumbs.db  
*.iml  
# 要忽略的文件夹  
.hg  
.svn  
.CVS  
.idea  
node_modules/  
jscoverage_lib/  
bower_components/  
dist/ 
6. 实用的快速生成.gitignore模板工具
本章参考链接:https://www.cnblogs.com/kevingrace/p/5690241.html
本文来自博客园,作者:你就是星光,转载请注明原文链接:https://www.cnblogs.com/xzqyl/p/17045399.html

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号