(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

相关推荐
虾..7 小时前
Linux 软硬链接和动静态库
linux·运维·服务器
Evan芙7 小时前
Linux常见的日志服务管理的常见日志服务
linux·运维·服务器
hkhkhkhkh1239 小时前
Linux设备节点基础知识
linux·服务器·驱动开发
HZero.chen10 小时前
Linux字符串处理
linux·string
张童瑶10 小时前
Linux SSH隧道代理转发及多层转发
linux·运维·ssh
汪汪队立大功12310 小时前
什么是SELinux
linux
石小千11 小时前
Linux安装OpenProject
linux·运维
柏木乃一11 小时前
进程(2)进程概念与基本操作
linux·服务器·开发语言·性能优化·shell·进程
Lime-309011 小时前
制作Ubuntu 24.04-GPU服务器测试系统盘
linux·运维·ubuntu
百年渔翁_肯肯11 小时前
Linux 与 Unix 的核心区别(清晰对比版)
linux·运维·unix