git log --grep 搜索提交注释

本文介绍如何使用Git的log命令通过正则表达式搜索提交消息。支持POSIX基本和扩展正则表达式,并提供多个示例说明不同类型的匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

git log 支持正则表达式搜索提交消息( commit message )。

git log --grep <regexp>
    --basic-regexp
    -E, --extended-regexp

git log 支持 POSIX Basic Regular Expression (BRE) 和 POSIX Extended Regular Expression (ERE) ,与 grep 和 egrep 功能相同。默认使用 BRE ,如果要使用 ERE ,需要添加 -E--extended-regexp 选项。

POSIX Basic Regular Expression 简介

符号含义
.匹配任意单个字符(不包括\n)
^匹配行首
$匹配行尾
[ ]匹配中括号内的单个字符
[^ ]匹配非中括号内的单个字符
*星号之前的字符出现0次或多次
\{n\}前一个字符刚好出现n次
\{n,\}前一个字符至少出现n次
\{n,m\}前一个字符至少出现n次,至多出现m次

git log –grep 使用示例

git commit --allow-empty -m "APPLE"
git log --grep 'APPLE'
git log --grep 'A.*E'
git log --grep '^APPLE$'
git log --grep 'A[PL]*E'
git log --grep 'AP\{1,2\}LE'
git log --grep 'APPLE'

参考

Regular Expressions/POSIX Basic Regular Expressions

git-log

<think>我们正在回答用户关于git log命令的使用和示例的问题。根据用户要求,我们将使用中文回答,并确保行内数学表达式使用$...$格式(虽然本问题可能不涉及数学公式,但我们会遵循规则),独立公式使用$$...$$格式。同时,我们将生成相关问题,并在回答中引用的段落末尾添加引用标识。 首先,我们整理git log的基本用法和一些常用示例。git log命令用于显示提交日志。 基本语法: ```bash git log [<options>] [<revision-range>] [[--] <path>...] ``` 常用选项: - 无选项:显示提交历史,包括提交哈希、作者、日期和提交信息。 - `--oneline`:每个提交显示在一行,只显示提交哈希的前7个字符和提交信息。 - `--graph`:以文本图形显示分支和合并历史。 - `--decorate`:显示指向提交的引用(如分支、标签)。 - `--all`:显示所有分支的提交- `-p` 或 `--patch`:显示每个提交的补丁(具体更改内容)。 - `-n <num>`:限制显示的提交数量,例如`-2`显示最近两次提交- `--since` 和 `--until`:按时间过滤提交- `--author`:按作者过滤提交- `--grep`:在提交信息中搜索关键词。 - `--abbrev-commit`:仅显示提交哈希的前几个字符(默认7个字符)。 - `--pretty`:自定义输出格式,可以使用预定义的格式(如oneline, short, full, fuller)或自定义格式字符串。 示例: 1. 显示完整提交历史: ```bash git log ``` 2. 单行显示提交历史(简洁): ```bash git log --oneline ``` 3. 显示最近3次提交: ```bash git log -3 ``` 4. 显示包含具体更改内容的提交历史(显示diff): ```bash git log -p ``` 5. 按时间过滤,显示2023年1月1日之后的提交: ```bash git log --since="2023-01-01" ``` 6. 按作者过滤,显示特定作者的提交: ```bash git log --author="John Doe" ``` 7. 在提交信息中搜索关键词: ```bash git log --grep="bugfix" ``` 8. 图形化显示分支合并历史: ```bash git log --graph --oneline --decorate --all ``` 9. 自定义输出格式: ```bash git log --pretty=format:"%h - %an, %ar : %s" ``` 其中,`%h`表示提交哈希(短格式),`%an`表示作者名字,`%ar`表示作者相对日期,`%s`表示提交信息。 10. 显示某个文件或目录的提交历史: ```bash git log -- <path> ``` 另外,根据提供的引用内容,我们可以补充: - 默认情况下,`git log`会显示提交注释(notes),除非使用了`--pretty`、`--format`或`--oneline`选项[^1]。 - 关于初始提交的显示,默认情况下会被视为一个大的创建事件(即会显示其完整的diff),可以通过设置`log.initialDecorationSet`为false来改变[^2]。 - 使用`-<数字>`可以限制提交数量[^3]。 - `--pretty`格式中,可以使用`%+`来在占位符输出非空时插入换行[^4]。 - 注意:引用[5]是关于`git reset`的,与`git log`无关,故不采用。 现在,我们按照要求生成相关问题。 §§相关问题§§ 1. 如何让`git log`显示所有分支的提交历史? 2. 如何查看某个特定文件的修改历史? 3. `git log`的输出格式可以自定义吗?如何自定义? 4. 如何按日期范围过滤`git log`的输出? 5. 如何搜索包含特定关键字的提交信息?</think>### Git Log 命令详解与示例 `git log` 是 Git 中查看提交历史的命令,支持多种过滤条件和格式化输出。以下是核心用法: #### 基础用法 ```bash git log ``` 显示完整提交历史,包含提交哈希、作者、日期和提交信息[^3]。 #### 常用选项 1. **简洁输出** (`--oneline`) 每行显示一个提交的缩略哈希和提交信息: ```bash git log --oneline # 示例输出 # d3b1a3b (HEAD -> main) 修复登录模块 # 82fc1e7 添加用户注册功能 ``` 2. **限制数量** (`-n`) 显示最近 N 次提交: ```bash git log -3 # 显示最近3次提交 ``` 3. **图形化分支** (`--graph --decorate`) 可视化分支和合并历史: ```bash git log --graph --decorate --oneline # 输出示例: # * d3b1a3b (feature/login) 优化登录逻辑 # | * 82fc1e7 (main) 更新文档 # |/ # * a1b2c3d 初始化项目 ``` 4. **按时间过滤** (`--since/--until`) 显示指定时间范围内的提交: ```bash git log --since="2024-01-01" --until="2024-01-15" ``` 5. **按作者过滤** (`--author`) ```bash git log --author="Alice" ``` 6. **搜索提交信息** (`--grep`) ```bash git log --grep="修复" # 搜索包含"修复"的提交 ``` 7. **显示文件修改历史** ```bash git log -- path/to/file.js ``` #### 高级格式化 使用 `--pretty=format` 自定义输出(支持占位符如 `%h` 哈希, `%an` 作者): ```bash git log --pretty=format:"%h | %an | %ad | %s" --date=short # 输出示例: # d3b1a3b | Alice | 2024-01-10 | 修复登录模块 ``` > 注意:默认情况下初始提交会显示完整差异,可通过配置 `log.initialDecorationSet=false` 禁用[^2]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值