(Git) gitignore基础使用

文章目录

  • 前言
  • [.gitignore 模式匹配](#.gitignore 模式匹配)
    • 注释 `#`
    • [转义 `\`](#转义 \)
    • 直接匹配
    • [任意字符匹配 `*`](#任意字符匹配 *)
    • [单个字符匹配 `?`](#单个字符匹配 ?)
    • [目录分割 `/`](#目录分割 /)
    • [多级目录 `**`](#多级目录 **)
    • [范围匹配 `[]`](#范围匹配 [])
    • [取消匹配 `!`](#取消匹配 !)
  • 检查是否生效
  • 父子文件
  • END

前言

Git - gitignore Documentation (git-scm.com)

在使用git管理的项目中,可以通过.gitignore文件管理一些需要忽略管理的文件。

注意就是全名为:.gitignore的文件。

.gitignore 模式匹配

注释 #

shell 复制代码
# 使用`#`进行注释

转义 \

shell 复制代码
# `\` 表示转义符号

直接匹配

忽略所有匹配的文件文件夹

shell 复制代码
main.cpp
build

任意字符匹配 *

*表示0或多个字符。

注意:不可以匹配/

shell 复制代码
# 匹配所有后缀为`.log`的文件
*.log

单个字符匹配 ?

?表示1个字符匹配。

注意:不可以匹配/

shell 复制代码
# 匹配所有后缀为`.log`且名字只有一个字符的文件
?.log

目录分割 /

开头

表示从当前的.gitignore文件路径进行匹配。

shell 复制代码
# 只对当前路径下的 test.cpp 起作用
/test.cpp

中间

最常见的含义,表示中间路径。

shell 复制代码
build/main.exe

末尾

只忽略文件夹,不忽略文件。

shell 复制代码
build/

多级目录 **

**用于多级目录的匹配。

弥补了*和?无法匹配/的问题。

shell 复制代码
# 匹配多级目录
build/**/Debug

范围匹配 []

有点类似正则表达式。

shell 复制代码
# 0.txt ~ 9.txt
[0-9].txt
# xay.txt xby.txt xcy.txt
x[abc]y.txt

取消匹配 !

! 用于取消已经匹配了的内容。

notes:一般建一个空白的.gitkeep来保证项目文件夹的存在。

特别注意:当该文件的父文件目录被排除时,这整个规则会无效。

shell 复制代码
!*.gitkeep

检查是否生效

shell 复制代码
# 若没被忽略则会显示
git check-ignore <文件或目录>

# -v 查看是被哪条规则忽略的
git check-ignore -v <文件或目录>

help信息:

shell 复制代码
usage: git check-ignore [<options>] <pathname>...
   or: git check-ignore [<options>] --stdin

    -q, --quiet           suppress progress reporting
    -v, --verbose         be verbose

    --stdin               read file names from stdin
    -z                    terminate input and output records by a NUL character

    -n, --non-matching    show non-matching input paths
    --no-index            ignore index when checking

父子文件

当在子文件夹有.gitignore文件时。当前子文件夹会遵守当前的.gitignore并忽略父文件夹下的规则。

END

ref:

【忽略文件版本控制gitignore详解,git-ignore精讲教程,2022年最新git基础使用,git进阶教程,git必备技能】
关注我,学习更多C/C++,算法,计算机知识

B站:

👨‍💻主页:天赐细莲 bilibili

相关推荐
M_emory_36 分钟前
解决 git clone 出现:Failed to connect to 127.0.0.1 port 1080: Connection refused 错误
前端·vue.js·git
Make_magic38 分钟前
Git学习教程(更新中)
大数据·人工智能·git·elasticsearch·计算机视觉
不穿铠甲的穿山甲39 分钟前
git-.git目录解析
git
运维佬1 小时前
CentOS 9 配置网卡
linux·centos
轩轩曲觞阁1 小时前
Linux网络——网络初识
linux·网络
2401_840192271 小时前
python基础大杂烩
linux·开发语言·python
weixin_438197382 小时前
K8S创建云主机配置docker仓库
linux·云原生·容器·eureka·kubernetes
舞动CPU8 小时前
linux c/c++最高效的计时方法
linux·运维·服务器
秦jh_10 小时前
【Linux】多线程(概念,控制)
linux·运维·前端
唔知小罗10 小时前
git config是做什么的?
git