一 .gitignore 的作用
如果你不想让本地仓库的所有文件都上传到远程仓库中,而是有选择的上传一部分的文件,比如说依赖文件,测试文件你不想提交,
可以通过 ".git目录 " 下的 .gitignore 文件,选择忽略这些文件。
二 .gitignore使用规则
2.1 在工作区创建 .gitignore
工作区:包含 .git目录的上一级目录,详见:GIt系列(一)中的工作区(Working Directory)
LiYapeng@Lenovo MINGW64 /d/Local_Warehouse (master)
$ touch .gitignore # 创建.gitignore文件,要在工作区创建,和 .git目录位于同一级目录下,在其它位置可能没用
LiYapeng@Lenovo MINGW64 /d/Local_Warehouse (master)
LiYapeng@Lenovo MINGW64 /d/Local_Warehouse (master)
$ ls -al
-rw-r--r-- 1 LiYapeng 197121 0 Apr 25 19:53 .gitignore
drwxr-xr-x 1 LiYapeng 197121 0 Apr 25 14:00.git/ # 用了ls-al 出现 .git/,这是工作区,要在该路径下创建 .gitignore,其它位置可能没用
2.2 .gitignore的语法
#:注释符,开头的行表示注释行
*:通配符,用来匹配零个或多个字符
?:用来匹配单个字符
** :匹配多级目录,可在开始,中间,结束
*.a表示忽略.a文件,工作区内都忽略,不管在工作区内的路径在哪里
[]:用来匹配括号内的任一字符,如[abc]
[0-9]:在[]中匹配0至9的数
[ ^ ] : 表示否定, [ ^0-4 ] .c 忽略除了 0 至 4之外的 .c 文件 , 忽略 3.c,不忽略 5.c
!:用来否定忽略,前面用了 *.c , !1.c , 否定忽略对1.c的忽略
/ 文件名:/a 如/a表示忽略根目录下的a文件,但不忽略子目录里的b/a文件 和 c/d/a文件
文件名 /:b/表示忽略b文件夹里的所有文件
**/abc: 表示忽略 /abc,a/abc,a/b/abc 等
a/**/b: 表示忽略a/b, a/123/b, a/fgh/dfghdfg/b等
.gitignore只能忽略那些未追踪的文件,如果某些文件已经被追踪中,即如果之前已经添加(add)到暂存区,则修改.gitignore是无效的。
解决方法就是先把本地缓存删除(改变成未track状态),然后再提交:
git add 1.txt # 1.txt 已经添加(add)到暂存区
vim .gitignore # 在 .gitignore中编辑内容,添加 *.txt
touch 2.txt # 创建 2.txt
git add . # 无法添加 2.txt 到暂存区
git commit -m "abcd" # 1.txt 被提交,2.txt不被提交到版本库
git push origin # 1.txt 被推送到远程仓库,2.txt不被推送到远程仓库
本地缓存删除(改变成未track状态),然后再提交
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
2.3 进入 .gitignore 编辑内容
$ vim .gitignore # 用 vim 进入 .gitignore 编辑内容
Windows环境下,选中打开方式,点击鼠标右键,选中记事本,点击鼠标左键,进入 .gitignore 编辑内容
文章来源:https://www.toymoban.com/news/detail-611507.html
2.4 .gitignore 的使用案例
.bin #表示忽略所有 .bin 结尾的文件或目录
?1.bin #表示忽略所有的(某一个字符)1.bin的文件或目录,忽略 a1.bin,11.bin,x1.bin ,不忽略aa1.bin,111.bin,xx1.bin
[1-9].c #表示忽略 1至9.c, 不忽略1.cpp , 99.c
[1-9].c #表示忽略 1至9.(任何).c, 忽略1.ac , 9.c, 6.ac, 不忽略 100.ac , 1.cpp
.[oa] #表示忽略 file.o,file.a ,不忽略 file.cpp
!a.bin #表示但a.bin除外
/a #表示仅仅忽略项目根目录下(和.git 位于 同一级目录下 )的 a 文件或目录,不包括 child/a
b/ #表示忽略 b/目录下的所有文件,忽略整个b文件夹
c/.txt #表示会忽略c/a.txt但不包括 c/d/e.txt
d/ #表示,忽略当前路径下的d文件夹(目录),该文件夹下的所有内容都会被忽略,不忽略d 文件(非目录)
/bin #表示忽略项目根目录下的bin文件
fd/ #表示忽略目录 fd下的全部内容,项目根目录下的 /fd1/ 目录 和 子目录 /child/fd/ 目录,都会被忽略
/fd1/ #表示忽略项目根目录下的 /fd1/ 目录的全部内容,不忽略/fd1, /a/fd1, /b/e/fd1/v
/a/b/* #表示忽略项目根目录下的 /a/b/ 目录的全部内容,不忽略/a/c, /x/a/b
/.c #表示忽略1.c,不忽略 child/2.c
e/.cpp #表示忽略e/123.cpp,不忽略 a/b/234.cpp和1/2/4.cpp
/f #表示忽略/f,a/f,a/b/f等
a//b #表示忽略a/b, a/asdf/b, a/q/w/b等
!/k/m.sh #表示不忽略k目录下的m.sh文件
*.txt #表示忽略所有 .txt 文件或目录
m.out #表示忽略当前项目根目录里面的 m.out文件和目录
2.5设置全局生效
首先创建文件,然后设置全局生效文章来源地址https://www.toymoban.com/news/detail-611507.html
touch ~/.gitignore_global # 创建.gitignore_global
vim ~/.gitignore_global # 设置忽略规则,vim 怎么用这里不讲 ,csdn上有搜索即可
# 也可用记事本代替 vim 设置忽略规则 .gitignore_global ,打开记事本的方法 在2.1进入 .gitignore 编辑内容中有
git config --global core.excludesfile ~/.gitignore_global #设置所有的本地仓库生效
到了这里,关于GIt系列(二)忽略文件(.gitignore)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!