- Git 入门
- Git - 首页
- Git - 版本控制
- Git - 基本概念
- Git - 命令行
- Git - 安装
- Git - 首次设置
- Git - 基本命令
- Git - 获取帮助
- Git - 工具
- Git - 速查表
- Git - 专业术语
- Git 分支
- Git - 简述分支
- Git - 创建新分支
- Git - 切换分支
- Git - 分支和合并
- Git - 合并冲突
- Git - 管理分支
- Git - 分支工作流程
- Git - 远程分支
- Git - 跟踪分支
- Git - 变基
- Git - 变基与合并
- Git - 合并提交
- Git 操作
- Git - 克隆操作
- Git - 标签操作
- Git - 别名操作
- Git - 提交操作
- Git - 暂存操作
- Git - 移动操作
- Git - 重命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 修补程序操作
- Git - 差异操作
- Git - 状态操作
- Git - 日志操作
- Git - HEAD 操作
- Git - origin master
- Git 撤销
- Git - 撤销更改
- Git - 切出
- Git - 恢复
- Git - 重置
- Git - 恢复操作
- Git - rm
- Git - 切换操作
- Git - cherry-pick
- Git - amend
- 服务器上的 Git
- Git - 本地协议
- Git - 智能 HTTP 协议
- Git - 简单 HTTP 协议
- Git - SSH 协议
- Git - Git 协议
- Git - 在服务器上获取 Git
- Git - 设置服务器
- Git - 守护进程
- Git - GitWeb
- Git - GitLab
- Git - 第三方托管选项
- 分布式 Git
- Git - 分布式工作流程
- Git - 为项目做贡献
- Git - 维护项目
- 自定义 Git
- Git - 配置
- Git - 钩子
- Git - 属性
- Git - init
- Git - commit
Git 日志
命令 `git log` 默认情况下按反时间顺序显示提交日志。此命令非常有用,因为它有助于跟踪和理解项目的历史记录,了解谁做了更改以及何时更改。
用法
1. **查看提交历史** - 命令 `git log` 按反时间顺序显示提交日志,这意味着最新的提交首先列出。
每个提交条目包含
提交的唯一标识符 **提交哈希**。
提交的作者。
提交的日期和时间。
提交消息。
2. **过滤提交** - 可以使用不同的选项过滤提交历史记录,例如
`--author=
` - 只显示由指定作者完成的提交。 `--since` 或 `--until` - 显示在特定日期之前或之后进行的提交。
3. **精简输出** - `git log` 的默认输出通常很长且详细,但有多种方法可以使其精简。
`--oneline` - 每个提交都在一行中显示,包含提交哈希和提交消息。
`--graph` - 显示提交历史的详细图形表示。这有助于可视化分支和合并。
4. **显示提交差异** - 可以使用选项 `--patch / -p` 查看每个提交的差异 (diff)。
5. **限制提交数量** - 可以使用 `-n` 选项限制提交数量。可以为 n 值指定一个数字。
6. **按消息搜索提交** - 可以使用 `--grep` 选项搜索提交。这将搜索提交消息中包含特定单词或短语的提交。
7. **查看特定文件的提交** - 也可以查看特定文件的提交历史记录。您只需要在 `git log` 命令的末尾指定 `
语法
命令 `git log` 具有以下语法
git log
它显示可以通过父链接从给定提交访问的提交,但不包括以符号 `^` 为前缀的提交。
git log feature-branch master ^bugfix-branch
该命令表示 **列出所有可从 feature-branch 或 master 访问的提交**,但不包括可从 **bugfix-branch** 访问的提交。
通过移除所有可从 **bugfix-branch** 访问的提交,它有效地显示了 **feature-branch** 和 **master** 独有的提交。
在 Git 语法中,`
这意味着列表中将包含可通过 `
例如,这些命令是可互换的
git log feature-branch..master git log master ^feature-branch
这两个命令实际上都表示列出可从 master 访问但不可从 **feature-branch** 访问的提交。
Git 计算两组提交之间的对称差,因此此格式 `
它类似于使用此表示法执行更直接的集合差运算。
例如,它可以用来识别两个不同分支之间的差异。
git log branch1 branch2 --not $(git merge-base --all branch1 branch2) git log branch1...branch2
这两个命令都生成可从分支 1 和 2 访问的提交的对称差。
此命令使用来自 `git-rev-list` 和 `git-diff` 命令的参数,允许修改显示内容以及如何显示每个提交引入的更改的选项。
选项
`git log` 提供以下选项
格式化选项
以下选项控制提交日志的显示方式
1. `--oneline` - 每个提交都显示在一行中,包含提交哈希和消息。
git log --oneline
2. `--pretty=
自定义格式有一些占位符,如下所示:
`%H` - 提交哈希
`%h` - 缩写提交哈希
`%an` - 作者姓名
`%ae` - 作者邮箱
`%ar` - 作者日期,相对时间
`%s` - 提交消息
git log --pretty=short git log --pretty=format:"%h - %an, %ar : %s"
3. `--graph` - 可以看到分支和合并历史的 ASCII 图表。
git log --graph
4. `--decorate[=short|full|auto|no]` - 使用此选项,可以在提交哈希旁边看到引用名称。
它默认为 `auto`,基于终端输出,确定如何显示像 `refs/heads/`、`refs/tags/` 和 `refs/remotes/` 这样的 ref 名称以及提交信息。
git log --decorate
5. `--no-decorate` - 使用此选项,无法在提交哈希旁边看到引用名称。
git log --no-decorate
6. `--stat` - 每个提交引入的更改摘要。
git log --stat
过滤选项
以下选项可用于过滤提交日志
1. `--author=
git log --author="John Doe"
2. `--grep=
git log --grep="fixed"
3. `--since=
git log --since="2015-01-01" --until="2015-01-02"
4. `--after=
git log --after="2015-01-01" --before="2015-01-05"
5. `--all` - 可以看到所有分支的提交历史。
git log --all
限制选项
以下选项可用于限制提交日志
1. `-n
git log -n=5
2. `-p` - 可以使用选项 `--patch / -p` 查看每个提交的差异 (diff)。
git log -p
3. `--max-count=
git log --max-count=5
4. `--skip=
git log --skip=5
5. `--reverse` - 反转提交顺序。
git log --reverse
其他选项
其他一些杂项选项如下所示
1. `--follow` - 即使文件被重命名,`git log` 中的 `--follow` 选项也会跟踪其历史记录,但这仅适用于跟踪单个文件。
git log --follow
2. `--decorate-refs=
git log --decorate-refs="refs/heads/*"
3. `--decorate-refs-exclude=
git log --decorate-refs-exclude="refs/heads/*"
4. `--name-only` - 只显示每个提交中更改的文件的名称。
git log --name-only
5. `--name-status` - 只显示每个提交中更改的文件的状态,例如已添加、已修改或已删除。
git log --name-status
6. `-S
git log -S"fixed"
7. `--clear-decorations` - Git `log` 命令中的 `--clear-decorations` 选项默认情况下会扩展修饰以包含所有引用,并重置任何之前的 `--decorate-refs` 或 `--decorate-refs-exclude` 设置。
git log --clear-decorations
8. `--source` - Git `log` 命令中的 `--source` 选项打印在命令行中用于到达每个提交的 ref 名称。
git log --source
选项组合
上述选项可以与 `git log` 命令组合使用,例如 `git log --all --name-only`、`git log --oneline --max-count=5` 等。
上述选项允许您自定义 `git log` 以满足您的特定需求,无论您是在搜索特定更改、分析分支的历史记录还是跟踪问题和修复。