• .gitignore语法及配置问题


    前言

    在工程中,并不是所有文件都需要保存到版本库中,例如“target”目录及目录下的文件就可以忽略。在Git工作区的根目录下创建一个特殊的.gitignore文件,然后把要忽略的文件名填进去,Git就会自动忽略这些文件或目录。
    在这里插入图片描述

    .gitignore语法

    标识说明举例
    #或空格空行或以#开头的行将被git忽略,可以用作注释### IntelliJ IDEA ###
    *代表零个或多个任意字符*.txt会匹配所有后缀为txt的文件
    代表一个任意字符?.txt 会匹配a.txt 但不会匹配ab.txt
    []可以匹配括号内的任一字符[abc].txt 会匹配a.txt,b.txt和c.txt
    **两个星号 ** 表示任意中间目录**/foo会匹配 foo,a/foo,a/b/foo等
    前缀!表示不忽略*.txt和!important.txt会忽略所有的.txt文件,但不会忽略important.txt
    前缀/表示只忽略当前目录下的文件/test 会忽略当前目录下的test文件,但不会忽略a/test
    后缀/表示只忽略目录test/ 会忽略test目录,但不会忽略test文件

    温馨提示
    /文件夹名前,/test表示根目录下的某个文件,/test/表示忽略根目录下的/test/目录的全部内容,而test/表示忽略文件夹test下的全部内容,不管是根目录下的/test/,还是某个子目录下的test文件夹,比如:/child/test,都会被忽略

    Git 忽略规则优先级

    在 .gitingore 文件中,每一行指定一个忽略规则,Git 检查忽略规则的时候有多个来源,它的优先级如下(由高到低):
    1、从命令行中读取可用的忽略规则
    2、当前目录定义的规则
    3、父级目录定义的规则,依次递推
    4、$GIT_DIR/info/exclude 文件中定义的规则
    5、core.excludesfile中定义的全局规则

    git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效

    gitignore规则不生效

    1、.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。解决方法就是先把本地缓存删除(改变成未track状态),然后再提交。
    相关git命令

    	git rm -r --cached .
    	git add .
    	git commit -m 'update .gitignore'
    
    • 1
    • 2
    • 3

    2、想添加一个文件到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.
    
    • 1
    • 2
    • 3
    • 4

    如果你确实想添加该文件,可以用-f强制添加到Git,或者是.gitignore写得有问题,需要找出来到底哪个规则写错了,可以用git check-ignore命令检查

    $ git check-ignore -v App.class
    .gitignore:3:*.class    App.class
    
    • 1
    • 2

    git会告诉我们,.gitignore的第3行规则忽略了该文件,于是我们就可以知道应该修订哪个规则。

    Java项目中常用的.gitignore文件

    # Prerequisites
    *.d
     
    # Compiled Object files
    *.slo
    *.lo
    *.o
    *.obj
     
    # Precompiled Headers
    *.gch
    *.pch
     
    # Compiled Dynamic libraries
    *.so
    *.dylib
    *.dll
     
    # Fortran module files
    *.mod
    *.smod
     
    # Compiled Static libraries
    *.lai
    *.la
    *.a
    *.lib
     
    # Executables
    *.exe
    *.out
    *.app
     
    build/
    .vscode/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    c++项目中常用的.gitignore

    # Prerequisites
    *.d
     
    # Compiled Object files
    *.slo
    *.lo
    *.o
    *.obj
     
    # Precompiled Headers
    *.gch
    *.pch
     
    # Compiled Dynamic libraries
    *.so
    *.dylib
    *.dll
     
    # Fortran module files
    *.mod
    *.smod
     
    # Compiled Static libraries
    *.lai
    *.la
    *.a
    *.lib
     
    # Executables
    *.exe
    *.out
    *.app
     
    build/
    .vscode/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    注意事项

    • 命令和注释别在同一行,如*.txt #注释txt这样会导致这一行无法被识别;
    • git add .之前如果有改动.gitignore一定要 执行 git rm -r --cached;
    • 合理使用.gitignore可以避免无用文件的上传,也可以防止重要配置信息的泄露.
  • 相关阅读:
    LeNet网络复现
    OpenCV之ellipse函数
    直播获奖
    Windows中实现将bat或exe文件作为服务_且实现命令行安装、配置、启动、删除服务
    【反射】Java反射机制 -- 常用构造器与方法
    聊一聊如何截获 C# 程序产生的日志
    新日语(2)】第15課 張さんは部長に褒められました
    Python第二章 基础语法
    排序概述笔记
    办鹿uniapp小程序(一)
  • 原文地址:https://blog.csdn.net/liqinglonguo/article/details/138082740