• 【Git忽略规则及.gitignore规则不生效的解决办法】


    在项目根目录下面 添加 .gitignore文件

    文件中每一行表示需要忽略的文件的正则表达式。

    .gitignore文件过滤有两种模式,开放模式和保守模式

    1. 开放模式负责设置过滤哪些文件和文件夹

    例如: /target/ 表示项目根目录下的target文件夹里面所有的内容都会被过滤,不被GIT 跟踪

    .classpath 表示项目根目录下的.classpath文件会被过滤,不被GIT跟踪

    2. 保守模式负责设置哪些文件不被过滤,也就是哪些文件要被跟踪。

    例如:

    !/target/*.h 表示target文件夹目录下所有的.h文件将被跟踪
    
    • 1

    如果你不清楚GIT会跟踪哪些文件,你可以先用git status命令查看一下

    $git status  
    # On branch master  
    # Untracked files:  
    #   (use "git add <file>..." to include in what will be committed)  
    #  
    #    .metadata/  
    #    gitignore  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    像这样的话,就是.metadata文件夹和gitignore被跟踪。

    另外别忘记了在.gitignore文件中加入一行.gitignore,否则的话.gitignore将会被传到GIT服务器上

    规则写法
    1. 在已忽略文件夹中不忽略指定文件夹

    /node_modules/*
    
    !/node_modules/layer/
    
    • 1
    • 2
    • 3

    2. 在已忽略文件夹中不忽略指定文件

    /node_modules/*
    
    !/node_modules/layer/layer.js
    
    • 1
    • 2
    • 3

    【注意项】注意写法 要忽略的文件夹一定要结尾 /* ,否则不忽略规则将无法生效

    3. 其他规则写法 (附)
      以斜杠“/”开头表示目录;
      以星号“*”通配多个字符;
      以问号“?”通配单个字符
      以方括号“[]”包含单个字符的匹配列表;
      以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;

    1、忽略文件

    *.bak               # 忽略所有扩展名为.bak的文件
    
    !keep.bak      # 但keep.bak文件除外(不会被忽略)
    
    temp/test.txt  # 忽略temp目录下的test.txt文件
    
    temp/*.txt       # 忽略temp目录下所有扩展名为.txt的文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2、忽略目录

    temp/       # 忽略temp目录下的所有目录和文件
    
    temp/*/    # 忽略temp目录下的所有目录,但不会忽略该目录下的文件
    
    • 1
    • 2
    • 3

    ------------------------Git忽略规则及.gitignore规则不生效的解决办法-----------------------------
    在git中如果想忽略掉某个文件,不让这个文件提交到版本库中,可以使用修改根目录中 .gitignore 文件的方法(如无,则需自己手工建立此文件)。这个文件每一行保存了一个匹配的规则例如:

    # 此为注释 – 将被 Git 忽略
    *.a # 忽略所有 .a 结尾的文件
    !lib.a # 但 lib.a 除外
    /TODO # 仅仅忽略项目根目录下的 TODO 文件,不包括 subdir/TODO
    build/ # 忽略 build/ 目录下的所有文件
    doc/*.txt # 会忽略 doc/notes.txt 但不包括 doc/server/arch.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

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

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

    注意:
      不要误解了 .gitignore 文件的用途,该文件只能作用于 Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。

    参考


    【git】git提交忽略不必要的文件或文件夹
    git提交忽略文件或文件夹

  • 相关阅读:
    SpringCloud Alibaba 简介
    HIL 测试
    高能数造电池3D打印智能制造小试线,开启全固态电池数字化新时代
    先睹为快!VCL界面DevExpress VCL 8月即将推出一系列新功能
    OpenCV每日函数 相机校准calibrateCamera函数
    react学习笔记1
    oracle 序列的属性有哪些
    数据资产如何入表?有哪些步骤
    自己动手构造一个shared_ptr (未完待续)
    【Flutter】 包管理(16)Flutter 流处理 深入理解和应用 Stream Transform 包实时处理数据
  • 原文地址:https://blog.csdn.net/zimojiang/article/details/125479011