git命令和用法详细介绍
下载安装:https://www.git-scm.com/downloads
在git下载页中有相应版本的详细的下载教程介绍
git 结构
- 工作区(Working Directory):
- 工作区是你在计算机上看到和编辑项目文件的地方。它包含了项目的所有文件和子目录。工作区是开发者进行代码编辑、编写、测试和调试的地方。
- 工作区中的文件可以处于未跟踪、已跟踪但未修改、已修改但未暂存、已暂存等不同状态。
- Git 可通过比较工作区中的文件和暂存区、本地仓库中的文件来检测变化,并使用
git status
命令查看这些变化。
- 暂存区(Staging Area 或 Index):
- 暂存区是一个临时存储区域,用于保存你当前工作区中标记为即将提交的改动。它作为工作区和本地仓库之间的缓冲区,确保你可以灵活地选择哪些改动要包含在下一次提交中。
- 部分提交:你可以选择性地将文件或文件的部分改动添加到暂存区,从而实现精细控制提交内容。
- 命令:使用
git add <file>
命令将改动从工作区添加到暂存区;使用git reset <file>
命令将改动从暂存区移除。
- 本地仓库(Local Repository):
- 本地仓库是存储在你本地计算机上的 Git 仓库,包含了所有的提交历史和对象数据库。每个本地仓库都是一个完整的版本控制仓库,可以独立于远程仓库进行操作。
- 本地仓库包含了项目的完整历史记录和所有版本的信息。
- 使用
git commit -m "message"
命令将暂存区的改动提交到本地仓库,生成一个新的提交对象。 - 使用
git log
命令查看提交历史
- 远程仓库(Remote Repository):
git基本知识详解
git相关书籍:
在线:https://www.git-scm.com/book/en/v2
离线:百度网盘分享
git配置:
- 查看git的配置信息。
git config --list --show-origin
示例:
- 在第一次安装完成后或者后续需要修改配置信息。也可找到对应系统下的配置文件中进行修改,具体内容可以查看上面的书籍,第一章:**1.6 起步 - 初次运行 Git 前的配置,**第八章:**8.1 自定义 Git - 配置 Git。**如下命令所示。
git config --global user.name "John Doe"
git config --global user.email johndoe@example.com
git 基础
仓库初始化和克隆
- 仓库初始化,即在你的项目根目录下通过命令创建.git文件,但需要到你的项目目录下执行该命令。其中文件所包含内容可参考推荐书籍第十章,Git 内部原理 。
git init
示例:
- 仓库克隆,即从远程服务器克隆项目到本地(
git clone <url>
)
#克隆仓库,不改变目录名称
git clone https://github.com/libgit2/libgit2
#克隆仓库,但改变目录名称
git clone https://github.com/libgit2/libgit2 mylibgit
关联远程仓库
git remote
命令用于管理 Git 仓库中的远程仓库。通过这个命令,你可以添加、查看、修改和删除远程仓库的连接。
查看远程仓库
git remote
这个命令列出所有配置的远程仓库名。
git remote -v
使用 -v
选项可以显示远程仓库的详细信息(URL)。
添加远程仓库
git remote add <name> <url>
# 示例 origin为对项目的重命名,即pb替代整个URL,
#可以使用add添加,也可以使用clone命令
git remote add origin https://github.com/user/repo.git
这个命令为当前仓库添加一个新的远程仓库。
删除远程仓库
git remote remove <name>
#示例
git remote remove origin
这个命令删除指定的远程仓库。
重命名远程仓库
git remote rename <old-name> <new-name>
# 示例
git remote rename <old-name> <new-name>
这个命令重命名一个远程仓库。
修改远程仓库 URL
git remote set-url <name> <newurl>
# 示例
git remote set-url origin https://github.com/user/newrepo.git
增加一个新的推送 URL
git remote set-url --add --push <name> <newurl>
# 示例
git remote set-url --add --push origin https://github.com/user/anotherrepo.git
删除一个推送 URL
git remote set-url --delete --push <name> <url>
# 示例
git remote set-url --delete --push origin https://github.com/user/anotherrepo.git
示例:
关联远程仓库图例:
查看关联状态:
拉取仓库:
添加文件到暂存区:
git add
-
添加所有文件的改动:
git add -A # 或 git add --all
-
交互模式:
-
i
或-interactive
:以交互模式运行,允许你分步选择要添加的文件。git add -i # 或 git add --interactive
-
-
补丁模式:
-
p
或-patch
:以补丁模式运行,允许你分步选择文件中的具体更改。git add -p # 或 git add --patch
-
-
更新已跟踪文件:
-
u
或-update
:只添加已跟踪文件的更改,而不包括新文件。git add -u # 或 git add --updat
-
-
所有改动:
-
A
或-all
:添加所有改动(包括未跟踪文件)。git add -A # 或 git add --a
-
-
忽略文件模式:
-
-ignore-removal
:不添加已删除的文件。git add --ignore-remove
-
-
强制添加:
-
f
或-force
:强制添加被.gitignore
忽略的文件。git add -f # 或 git add --force
-
-
详细输出:
-
v
或-verbose
:显示详细输出。git add -v # 或 git add --verbose
-
查看文件状态
*git status* [<options>…] [--] [<pathspec>…]
-s
或 --short
:以简洁的格式显示状态信息,适合快速查看
git status -s
# 或
git status --short
查看当前分支和跟踪信息
-b
或 --branch
:显示分支和跟踪信息。
git status -b
显示被忽略的文件:
--ignored
:显示被忽略的文件。
git status --ignored
忽略子模块:
-ignore-submodules[=<when>]
:忽略子模块的改动。when
可以是none
、untracked
、dirty
或all
。
git status --ignore-submodules=none # 默认,不忽略子模块
git status --ignore-submodules=untracked # 忽略未跟踪的子模块
git status --ignore-submodules=dirty # 忽略未提交的子模块
git status --ignore-submodules=all # 忽略所有子模块改动
显示无变化的目录:
--untracked-files[=<mode>]
:控制未跟踪文件的显示。mode
可以是 no
、normal
或 all
。
git status --untracked-files=no # 不显示未跟踪的文件
git status --untracked-files=normal # 默认模式,显示未跟踪的文件
git status --untracked-files=all # 显示所有未跟踪的文件,包括未跟踪的目录中的文件
示例:
添加所有文件到暂存区
查看文件状态
提交文件到本地仓库
git commit
命令用于将暂存区的更改记录到本地仓库的历史记录中。每次提交(commit)都会生成一个唯一的提交对象,并且提交的记录包含了作者、日期、提交信息等。
-
使用编辑器编辑提交信息:
-
默认情况下,不使用
m
选项时,git commit
会启动默认的文本编辑器让你输入提交信息。git commit
-
-
指定提交信息:
-
m
或-message
:直接在命令行中指定提交信息。git commit -m "Initial commit"
-
-
多行提交信息:
-
使用多个
m
选项,可以为提交添加多行消息。git commit -m "Title" -m "Detailed description"
-
-
添加所有改动并提交:
-
a
或-all
:自动将已跟踪的文件的改动添加到暂存区,并进行提交。git commit -a -m "Commit message for all changes"
-
-
修正上一次提交:
-
-amend
:修正上一次提交,包括修改提交信息或添加新的更改。若有更改尚未暂存,可以先使用git add
,然后使用-amend
将这些更改包含在上一次提交中。git commit --amend
-
-
提交时签名:
-
S
或-gpg-sign
:使用 GPG 密钥对提交进行签名。git commit -S -m "Signed commit message"
-
-
指定提交作者:
-
-author
:指定提交的作者信息(用于代他人提交)。git commit --author="John Doe <john.doe@example.com>" -m "Commit message"
-
-
使用模板提交信息:
-
t
或-template
:指定一个文件作为提交信息的模板。git commit -t /path/to/template.txt
-
-
空提交:
-
-allow-empty
:允许创建一个没有任何改动的提交。git commit --allow-empty -m "Empty commit"
-
-
记录提交状态:
-
v
或-verbose
:在提交信息中包含改动的详细内容。git commit -v -m "Commit message with diff"
-
-
添加注释:
-
e
或-edit
:启动编辑器让你编辑提交信息,通常用于修正提交信息。git commit -e
-
删除文件
git rm
命令用于从工作区和暂存区中删除文件。执行git rm
后,这些文件会在下一次提交时从 Git 仓库中删除。git rm
- 删除单个文件:
git rm file.txt
-
递归删除目录:
-
r
或-recursive
:递归删除目录及其内容。git rm -r <directory> #示例: git rm -r olddir/
-
-
强制删除:
-
f
或-force
:强制删除文件,即使它们有未提交的改动或已被其他用户修改。git rm -f <file> #示例 git rm -f protectedfile.txt
-
-
仅从暂存区删除:
-
-cached
:仅从暂存区删除文件,而不删除工作区中的文件。git rm --cached <file> #示例 git rm --cached log.txt
-
移动文件
git mv
命令用于移动或重命名文件或目录。它实际上是执行文件系统的移动操作,并且会将这些更改记录在 Git 的暂存区。
git mv <source> <destination>
- 重命名文件:
git mv oldfile.txt newfile.txt
- 移动文件到新目录
git mv file.txt newdir/
- 重命名和移动文件
git mv olddir/file.txt newdir/newfile.txt
推送和拉取文件
推送(push)和拉取(pull)是两个最常见的操作,用于将本地仓库与远程仓库进行同步。
推送文件到远程仓库
git push
命令用于将本地的提交推送到远程仓库,通常用于将本地分支的更改共享给其他团队成员。
基本用法
git push <remote> <branch>
#示例
git push origin main
<remote>
:远程仓库的名称,通常是origin
。<branch>
:要推送的本地分支的名称。
推送所有分支
推送本地所有分支到远程仓库:
git push --all <remote>
#示例
git push --all origin
强制推送
强制推送覆盖远程仓库的内容(谨慎使用):
git push --force
#示例
git push origin main --force
推送新建分支
如果你在本地创建了一个新分支,并且希望将其推送到远程仓库:
git push -u <remote> <branch>
#示例
git push -u origin new-feature
u
或-set-upstream
:将本地分支设置为跟踪远程分支。
拉取文件到本地仓库
git pull
命令用于从远程仓库拉取最新的更改并合并到当前分支,通常用于同步远程仓库中的最新更改。
基本用法
git pull <remote> <branch>
#示例
git pull origin main
<remote>
:远程仓库的名称,通常是origin
。<branch>
:要拉取的远程分支的名称。
拉取并进行 rebase
默认情况下,git pull
会进行合并操作。如果你希望使用 rebase 来代替合并,可以使用 --rebase
选项:
git pull --rebase <remote> <branch>
#示例
git pull --rebase origin main
拉取特定标签
如果你需要拉取远程仓库中的特定标签,可以使用:
git fetch <remote> tag <tagname>
#示例:
git fetch origin tag v1.0
高级选项和命令
- 推送特定提交
如果你想推送特定的提交到远程分支,可以使用以下命令:
git push <remote> <commit>:<branch>
#示例
git push origin a1b2c3d4:main
- 仅推送未推送的提交
推送所有本地分支中未推送的提交到远程仓库:
git push <remote>
#示例
git push origin
- 获取(fetch)远程分支
git fetch
命令用于从远程仓库下载对象和引用,而不进行合并。它允许你查看远程分支的状态而不改变本地分支:
git fetch <remote>
#示例
git fetch origin
常见问题和解决方案
- 推送被拒绝(Push Rejected)
当远程分支有新的提交,而本地分支没有这些提交时,推送可能会被拒绝。解决方法是先拉取最新的更改,然后再推送:
git pull origin main
git push origin main
- 合并冲突
在拉取过程中可能会遇到合并冲突。Git 会提示你哪些文件存在冲突,你需要手动解决这些冲突并提交更改:
# 拉取更改
git pull origin main
# 解决冲突后,添加解决后的文件
git add <conflicted-file>
# 提交解决后的更改
git commit -m "Resolved merge conflict"
查看操作历史
git log
命令用于查看 Git 仓库的提交历史。通过 git log
,可以查看每次提交的详细信息,包括提交哈希值、作者、日期和提交消息。以下是 git log
命令的详解。
-
限制输出条数:
-
n
或-max-count
:显示最近的n
条提交记录。git log -n 5 # 显示最近 5 条提交
-
-
单行格式输出:
-
-oneline
:以单行格式显示提交记录,每条提交记录只显示提交哈希和提交信息。git log --oneline
-
-
图形化显示提交历史:
-
-graph
:以图形方式显示提交历史,便于查看分支和合并情况。git log --graph
-
-
显示简洁信息:
-
-pretty
:以指定格式显示提交记录。常见格式有oneline
、short
、full
、fuller
、format:<string>
。git log --pretty=oneline git log --pretty=short git log --pretty=full git log --pretty=fuller git log --pretty=format:"%h - %an, %ar : %s"
-
-
按日期范围筛选:
-
-since
和-until
:显示指定日期范围内的提交记录。git log --since="2022-01-01" --until="2022-12-31"
-
-
按作者筛选:
-
-author
:只显示指定作者的提交记录。git log --author="John Doe"
-
-
按提交消息筛选:
-
-grep
:只显示提交信息中包含指定关键字的提交记录。git log --grep="bug fix"
-
-
显示文件改动:
-
p
或-patch
:显示每次提交的详细文件改动(差异)。git log -p
-
-
显示统计信息:
-
-stat
:显示每次提交的文件改动统计信息。git log --stat
-
-
显示补丁(diff):
-
u
或-unified
:显示每次提交的统一格式(unified format)的差异。git log -u
-
-
显示范围内的提交:
-
start..end
:显示两个提交之间的所有提交记录。git log HEAD~5..HEAD # 显示最近 5 次提交的记录
-
-
反转顺序:
-
-reverse
:按时间倒序显示提交记录。git log --reverse
-
文件差异比较
git diff
命令用于显示两个提交、提交与工作目录之间,或者工作目录中不同版本的文件之间的差异
-
查看工作目录与暂存区之间的差异:
git diff
-
查看暂存区与最后一次提交之间的差异:
git diff --cached
或者
git diff --staged
-
查看工作目录与指定提交之间的差异:
git diff <commit> #示例、 git diff HEAD
-
查看两个指定提交之间的差异:
git diff <commit1> <commit2>
-
查看指定文件的差异:
git diff <commit> -- <file> #示例 git diff HEAD -- filename.txt
或者
git diff <commit1> <commit2> -- <file>
-
查看提交的详细差异:
git diff <commit>^! # 查看某个提交的差异 #示例 git diff commit1^! # 等价于 git diff commit1^ commit1
-
忽略空白字符的变化:
-
w
或-ignore-all-space
:忽略所有空白字符的变化。git diff -w
-
-
显示统计信息:
-
-stat
:显示文件的修改统计信息。git diff --stat
-
-
简洁输出:
-
-name-only
:只显示被修改的文件名。git diff --name-only
-
-name-status
:显示被修改的文件及其状态(新增、修改、删除)。git diff --name-status
-
-
显示特定行的差异:
-
U
或-unified
:显示上下文行数,默认显示 3 行上下文。git diff -U1 # 显示 1 行上下文
-
-
查看自上次提交以来,所有分支的差异:
git diff @{u}
-
查看工作目录中与上次提交以来的差异,包括未暂存和已暂存的文件:
git diff HEAD
-
比较当前分支与另一个分支之间的差异:
git diff main..feature-branch
撤销操作
- 撤销对文件的修改
如果你在工作目录中修改了文件,但还未将修改添加到暂存区,可以使用以下命令来撤销这些修改:
git checkout -- <file>
#示例:
git checkout -- README.md
2. 撤销暂存区的修改
如果你已经将修改添加到暂存区,但尚未提交,可以使用以下命令将这些修改从暂存区移除:
git reset HEAD <file>
#示例:
git reset HEAD README.md
- 修改最后一次提交
如果你已经提交了更改,但需要修改提交信息或添加遗漏的更改,可以使用以下命令:
git commit --amend
此命令会打开默认文本编辑器,让你编辑提交信息。你也可以直接用 -m
选项指定新的提交信息:
git commit --amend -m "Updated commit message"
4. 回退到某个提交
如果你需要回退到某个特定的提交,可以使用 git reset
命令。git reset
有三种模式:
-
软回退:保留工作目录中的修改,但将 HEAD 指针移动到指定提交。
git reset --soft <commit>
-
混合回退(默认):保留工作目录中的修改,但将 HEAD 和暂存区回退到指定提交。
git reset --mixed <commit>
-
硬回退:将 HEAD、暂存区和工作目录都回退到指定提交,丢弃所有后续修改。
git reset --hard <commit> #示例 git reset --hard a1b2c3d4
5. 恢复某个提交的文件
如果你想恢复某个提交中的特定文件,可以使用以下命令:
git checkout <commit> -- <file>
#示例
git checkout a1b2c3d4 -- README.md
6. 撤销合并操作
如果你在合并过程中遇到了问题,并且希望撤销合并操作,可以使用以下命令:
git merge --abort
7. 使用 git revert
撤销提交
如果你希望撤销某个提交,并保留历史记录,可以使用 git revert
命令。git revert
会创建一个新的提交来撤销指定的提交。
git revert <commit>
#示例
git revert a1b2c3d
8. 丢弃未跟踪的文件
如果你想丢弃未跟踪的文件,可以使用以下命令:
git clean -f
f
或-force
:强制删除未跟踪的文件。
如果你还想删除未跟踪的目录,可以使用 -d
选项:
git clean -fd
9. 交互式重置提交历史
如果你需要对多个提交进行修改或删除,可以使用交互式 rebase:
git rebase -i <commit>
#示例
git rebase -i HEAD~3
#这个命令会打开一个交互式编辑器,让你选择和修改最近的三个提交。
标签的使用
git tag
命令用于给 Git 仓库中的某个特定提交打上标签(tag),类似于给提交打上标记,以便于后续查找和管理。标签通常用于标记版本发布(如 v1.0, v2.0 等)。
轻量标签(Lightweight Tag)
轻量标签是一个简单的标签,实际上只是特定提交的引用,不包含任何附加信息。
创建轻量标签
git tag <tagname>
#示例
git tag v1.0示例:
附注标签(Annotated Tag)
附注标签是一个完整的对象,包含标签名、创建者信息、日期、标签说明等。它们被存储在 Git 数据库中,并且可以签名和验证。
创建附注标签
git tag -a <tagname> -m "tag message"
#示例
git tag -a v1.0 -m "Release version 1.0"
签名标签
签名标签是附注标签的变种,用于通过 GPG 签名进行验证。
创建签名标签
git tag -s <tagname> -m "tag message"
#示例
git tag -s v1.0 -m "Release version 1.0"
列出标签
你可以使用 git tag
命令列出所有标签:-l或-list
git tag
#示例
git tag -l "v1.*"
按模式列出标签
查看标签信息
查看附注标签的详细信息:
git show <tagname>
#示例
git show v1.0
删除标签
删除本地标签:
git tag -d <tagname>
#示例
git tag -d v1.0
删除远程标签:
git push origin --delete <tagname>
#示例
git push origin --delete v1.0
推送标签到远程仓库
默认情况下,标签不会自动推送到远程仓库。你需要手动推送标签。
推送单个标签:
git push origin <tagname>
#示例
git push origin v1.0
推送所有标签:
git push origin --tags
检出标签
检出标签会进入一个“分离的 HEAD”状态:
git checkout <tagname>
#示例
git checkout v1.0
如果你需要在标签基础上进行开发,可以创建一个新的分支:
git checkout -b <new-branch-name> <tagname>
#示例
git checkout -b new-feature v1.0
git 分支
1. git分支
允许在同一项目中同时进行多个独立的开发工作。分支使你能够在不影响主代码库的情况下进行试验、开发新功能、修复 bug 等操作。Git 的分支,其实本质上仅仅是指向提交对象的可变指针。
- git 分支创建合并与切换
创建
使用 git branch
命令可以创建一个新的分支。
git branch <branch-name>
#示例
git branch feature-xyz
2. 切换分支
使用 git checkout
命令可以切换到已存在的分支。
git checkout <branch-name>
#示例
git checkout feature-xyz
在新版本的 Git 中,可以使用 git switch
命令切换分支,这个命令专门用于分支切换:
git switch <branch-name>
3. 创建并切换分支
可以使用 -b
选项同时创建并切换到一个新分支。
git checkout -b <branch-name>
#示例
git checkout -b feature-xyz
使用 git switch
命令的对应做法:
git switch -c <branch-name>
4. 查看分支
列出所有本地分支:
git branch
列出所有远程分支:
git branch -r
列出所有本地和远程分支:
git branch -a
5. 合并分支
将其他分支的更改合并到当前分支:
git merge <branch-name>
#示例
git checkout main
git merge feature-xyz
6. 解决合并冲突
在合并过程中可能会遇到冲突,需要手动解决冲突并提交解决后的更改:
sh复制代码
# 查看冲突文件
git status
# 编辑冲突文件并解决冲突
# 添加解决后的文件
git add <conflicted-file>
# 提交解决后的更改
git commit -m "Resolved merge conflict"
7. 删除分支
删除本地分支:
git branch -d <branch-name>
#示例
git branch -d feature-xyz
如果分支未合并,可以使用 -D
强制删除:
git branch -D <branch-name>
#示例
git branch -D feature-xyz
删除远程分支:
git push <remote> --delete <branch-name>
#示例
git push origin --delete feature-xyz
8. 分支重命名
重命名当前分支:
git branch -m <new-branch-name>
重命名指定分支:
git branch -m <old-branch-name> <new-branch-name>
#示例
git branch -m feature-xyz feature-abc
9. 跟踪远程分支
一个本地分支与一个远程分支之间的关联关系。这种关系允许你方便地同步本地和远程仓库之间的更改。跟踪分支使得从远程仓库拉取更新和推送更改变得更加简单和直观。
创建一个新分支并设置为跟踪远程分支:
git checkout -b <branch-name> <remote>/<branch-name>
#示例
git checkout -b feature-xyz origin/feature-xyz
设置现有的本地分支跟踪远程分支:
git branch --set-upstream-to=<remote>/<branch-name>
#示例
git branch --set-upstream-to=origin/feature-xyz
10. 分支的基本工作流示例
-
创建和切换到新分支:
git checkout -b feature-xyz
-
在新分支上进行开发:
-
编辑文件并进行提交
git add . git commit -m "Developing feature xyz"
-
-
切换回主分支并合并新分支:
git checkout main git merge feature-xyz
-
删除已合并的分支:
git branch -d feature-xyz
远程和本地仓库操作
github或gitee项目拉取到本地创建的项目中,即本地创建了项目,远程仓库也创建了的处理方法,如下两个图所示
1、初始化关联远程仓库
2、查看关联状态
-
查看文件状态
-
拉取远程仓库的内容并合并到当前分支。
-
添加文件到暂存区
-
提交文件到本地仓库
- 推送本地仓库中记录的文件到远程仓库
- 查看操作记录
可能遇到的问题:
- 文件推送到远程一直推送不成功
- 文件未被添加到暂存区。
.gitignore
文件中忽略了src
文件夹。- 提交时遗漏了
src
文件夹。 - 远程仓库更新有误。
fatal: not a valid object name: 'master'
错误。
说明你的远程仓库可能没有名为 master
的分支。使用 git pull
命令拉取远程仓库的内容并合并到当前分支。如果主分支是 main
,则使用以下命令:
git pull origin main --allow-unrelated-histories
如果确认远程分支是 master
,则相应使用:
git pull origin master --allow-unrelated-histories
附:
.gitignore文件相关知识
.gitignore
文件用于指定哪些文件或目录应该被 Git 忽略,即不添加到版本控制系统中。这个文件的编写和语法遵循特定的规则和约定。
.gitignore
文件的主要内容
通常 .gitignore
文件包含以下类型的文件和目录:
- 操作系统生成的文件:如 macOS 的
.DS_Store
、Windows 的Thumbs.db
等。 - 开发工具生成的文件:如 IDE 的配置文件、日志文件等。
- 编译生成的文件:如
node_modules
、dist
目录、编译后的二进制文件等。 - 敏感信息:如包含密码或密钥的配置文件。
- 临时文件:如临时编辑器文件、交换文件等。
.gitignore
文件的语法
以下是 .gitignore
文件的基本语法和规则:
-
空行和以
#
开头的行会被 Git 忽略:# 这是一个注释
-
匹配文件和目录:
-
直接匹配文件名或路径:
debug.log
-
匹配目录时,加
/
结尾:logs/
-
-
通配符 `` 表示零个或多个字符:
*.log # 忽略所有以 .log 结尾的文件 build/ # 忽略 build 目录及其所有内
-
?
匹配单个字符:config?.json # 忽略 config1.json, configA.json 等
-
[abc]
匹配方括号内的任一字符:log[0-9].txt # 忽略 log0.txt 到 log9.txt
-
以斜杠
/
开头表示相对于仓库根目录:/build # 忽略仓库根目录下的 build 目录
-
以
!
开头表示取反,即不要忽略:!important.log
-
双星号
*
匹配任意目录层级:**/temp/* # 忽略所有 temp 目录下的文件
如发现问题欢迎讨论提供建议~