Go to comments

平时记录 2025

1、.gitignore 的匹配规则

.gitignore 文件用于排除 Git 跟踪的文件


1. 直接写名字

排出所有名字为 dist 的目录或文件,而且不管目录有多深,比如 /a/dist 也会被排除

dist

|- project

  |-a

  |  |- dist  被排除

  |

  |- dist  被排除


2. 加 / 斜杠

斜杠在开头,

表示当前目录下对应的目录或文件( 当前目录就是 .gitignore 所在的目录

/dist

|- project

  |-a

  |  |- dist 不会被排除

  |

  |- dist 根目录下的 dist 会被排除


斜杠在中间,

表示从当前目录出发,在 a 目录下的 dist 会被排除

a/dist

|- project

  |-a

  |  |- dist  被排除

  |

  |- dist  不会被排除


斜杠在末尾,

跟直接写 dist 查不多,且不管目录的深度,唯一的不同的是排除的是目录,不包括文件

dist/


3. * 通配符

* 匹配 0 个到多个字符,但不包括 / 斜杠

比如排除掉一些日志文件,无论那个目录下面的日志文件都会被排除

*.log

|- project

  |-a

  |  |- 2.log 被排除

  |

  |- 1.log 被排除


* 通配符和一些规则联合使用,比如只排除 logs 目录下所有 .log 文件

logs/*.log

|- project

  |-logs

  |  |- 2.log 被排除

  |

  |- 1.log 不会被排除


两个星号 **,

一个 * 不匹配斜杠,它只排除 Logs 目录下的子文件,

两个 ** 星号,可以匹配任何字符,同时也可以匹配斜杠,可以排除目录了

比如排除 logs 目录下面所有的 .log 文件,不管目录有多少深

logs/**/*.log

|- project

  |-logs

  |  |- sub

  |  |  |- 3.log 被排除

  |  |

  |  |- 2.log 被排除

  |

  |- 1.log 不会被排除


4. ? 号

只匹配名字是一个字符的 .log 文件,

比如 2.log 可以被排除,如果两个数字 31.log 就不能被排除

logs/**/?.log

|- project

  |-logs

  |  |- sub

  |  |  |- 31.log 不能被排除

  |  |

  |  |- 2.log 被排除

  |

  |- 1.log 不会被排除


如果两个 ?? 号匹配两个连续的字符


5. [] 中括号里写具体的匹配规则,也只匹配一个字符,

比如 [0-9] 表示匹配一个字符,同时必须是数字,a.log 不是数字不能被排除

logs/**/[0-9].log

|- project

  |-logs

  |  |- sub

  |  |  |- 31.log  不能被排除

  |  |

  |  |- 2.log  被排除

  |  |- a.log  不能被排除

  |

  |- 1.log  不会被排除


6. ! 感叹号,表示在前面的基础上,排除一些

比如,不跟踪 upload 目录下面所有用户上传的东西,不管目录有多深全部移除

/upload/**/*.*

|- project

  |-upload

    |- sub

    |  |- 1.zip

    |

    |- 1.jpg


但是这样会出一个问题,

由于 upload 下面全部被移除了,远程仓库那边不会建立这个 upload 目录,服务器那边可能会出一些问题,

常见的做法是在 upload 目录下面建立一个 .gitkeep 文件,文件名可以随意命名,习惯上用 gitkeep

|- project

  |-upload

    |- sub

    |  |- 1.zip

    |  

    |- .gitkeep  该文件的目的是不要被排除,远程仓库就要建立 upload 目录

    |- 1.jpg


这样 upload 目录下面除了 .gitkeep 以外全部被排除了,.gitkeep 起到了远程仓库建立 upload 目录的作用

/upload/**/*.*
!/upload/.gitkeep


一般在 .gitignore 的最后一行写上 !.gitkeep,保证在前面规则的基础上 .gitkeep 不会被排除

/upload/**/*.*
!.gitkeep


by:https://www.bilibili.com/video/BV1dkr3YMESN/


2、取整的区别

随机数函数里面,为什么要必须要用 Math.floor 取整呢?

function getRandom(x, y){
  return Math.floor(Math.random() * (y - x) + x);
}


parseInt 跟 Math.floor 的区别

parseInt 含义是向0取整,数轴的取整方向是 0

Math.floor 含义是向下取整,数轴方向是 -3

 -3,  -2.5,  -2,  -1,  0,  1,  2,  2.5,  3 

当取整的数字 2.5 是正数,这两个方法的方向是一致的,因此结果都是 2


如果是负数 -2.5

 -3,  -2.5,  -2,  -1,  0,  1,  2,  2.5,  3 

parseInt 向0取整,结果是 -2

Math.floor 向下取整,结果是 -3


比如,

产生随机范围是 -5 ~ 0 之间,0 是取不到的(因为 Math.random 产生的随机数范围是 [ 0, 1 ),1 是取不到的

function getRandom(x, y){
  return Math.random() * (y - x) + x;
}

const result = getRandom(-5, 0);
console.log(result);
console.log(Math.floor(result));


使用 Math.floor 取整的范围,从 -5 到 -1 每个数字的几率是一样的

 -5,  -4,  -3,  -2,  -1,  0 

-5 ~ -4  之间向下取整 -5 

-3 ~ -2  之间向下取整 -3 

-2 ~ -1  之间向下取整 -2 

-1 ~  0   之间向下取整 -1,0 取不到


parseInt() 是向 0 取整,

必须只有 Math.random 刚好为 0 的时候,经过该表达式的计算  Math.random() * (y - x) + x   才能取到 -5,极小几率才能出现

0 - -5 = -5

0  * -5 = 0

0 + -5 = -5


Math.round 是四舍五入,两头的几率小,中间的几率大,也不合适取整


by:https://www.bilibili.com/video/BV1Uw411i7s1/







Leave a comment 0 Comments.

Leave a Reply

换一张