赞
踩
.gitignore文件是在git提交的时候用来屏蔽某些你不想提交上去的文件。
项目开发过程中,有时候不想把一些文件(如中间文件/编译文件等)提交到git上。这个时候就由.gitignore文件来筛选出不想提交的文件。所筛选的文件/夹将不会被追踪(tracked),push的时候也不会上传到git上。
**以下用法配置是单片机C开发项目中的
我们需要在提交Git之前,需要自己创建一个.gitignore文件,由于Windows下创建文件必须键入文件名,而要创建的.gitignore文件是没有文件名的,所以我们可以使用move命令来实现,打开Git Bash ,使用mv gitignore.txt .gitignore
,然后用编辑器编辑这个文件。
*.a
表示忽略.a文件;*.[oa]
表示忽略所有以.a和.o结尾的文件,*~
忽略所有以~结尾的文件;[]
用来匹配括号内的任一字符,如[abc],也可以在括号内加连接符,如[0-9]匹配0至9的数;?
用来匹配单个字符;*.txt
,然后使用!*a.txt
,则这个a.txt不会被忽略/bin
表示忽略根目录下的bin文件,/bsp
表示忽略根目录下的bsp文件夹,但不忽略子目录里的user/bsp文件夹;bsp/
表示忽略bsp文件夹里的所有文件;在.gitignore文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):
1、忽略.bin文件
#忽略所有的.bin文件
*.bin
2、否定忽略 link.bin
#不忽略目录下的link.bin
!link.bin
#不忽略obj目录下的link.bin
!/obj/link.bin
3、忽略某目录.txt, 不包括子目录.txt
#忽略doc/notes.txt, 不包括doc/server/arch.txt
doc/*.txt
4、忽略某目录内所有的.pdf 文件
#忽略所有的 .pdf 文件 在 doc/ directory 下的
doc/**/*.pdf
5、忽略当前目录.c,不忽略子目录.c
#忽略 cat.c,不忽略 build/cat.c
/*.c
6、忽略当前路径下的Proj文件夹,该文件夹下的所有内容都会被忽略
#忽略当前路径下的Proj文件夹,该文件夹下的所有内容都会被忽略
Proj/
7、忽略Proj文件夹子目录文件夹
#忽略Proj文件夹子目录Obj文件夹里的所有文件
Proj/Obj/
8、忽略根目录下的某文件
#忽略根目录下的bin文件
/bin:
9、忽略/foo, a/foo, a/b/foo等
#忽略/foo, a/foo, a/b/foo等
**/foo:
10、忽略a/b, a/x/b, a/x/y/b等
#忽略a/b, a/x/b, a/x/y/b等
a/**/b:
11、忽略当前路径的某文件
#忽略当前路径的 config.php 文件
config.php:
一、.gitignore只能忽略那些原来没有被追踪(tracked)的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
1. git rm -r --cached .
2. git add .
3. git commit -m 'update .gitignore'
二、你想添加一个文件到Git,但发现添加不了,原因是这个文件被.gitignore忽略了:
$ git add App.class
The following paths are ignored by one of your .gitignore files:
App.class
Use -f if you really want to add them.
如果你确实想添加该文件,可以用-f强制添加到Git:
$ git add -f App.class
三、或者你发现,可能是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查:
$ git check-ignore -v App.class
.gitignore:3:*.class App.class
Git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。
在开发阶段,有时候需要临时忽略本地仓库中已提交的文件的变更。例如,你的配置文件与本机的工作环境或者项目配置有关,那么这个操作就非常有用:
git update-index --skip-worktree <file>
当然也可以恢复文件的追踪:
git update-index --no-skip-worktree <file>
也可以通过以下方式进行。这主要是为了防止文件被开发者修改。
关闭变更追踪:
git update-index --assume-unchanged <file>
恢复变更追踪:
git update-index --no-assume-unchanged <file>
如果一个文件已经被 Git 跟踪,那么再将这个文件添加到 .gitignore 中并不会忽略文件变更。你还需要从Git 暂存区(index)中移除这个文件的信息,步骤如下:
git rm --cached <file>
注:以上步骤不会从系统中删除文件,只是告诉Git以后忽略该文件的变更
以上是最近在用.gitignore文件时查阅的一些资料,感谢以下大神的帖子:
https://blog.csdn.net/weixin_45318845/article/details/120740012
https://blog.csdn.net/wnvalentin/article/details/105448739
如有描述有误的地方欢迎大家指出,感谢!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。