git log 命令
简介
git log 是 Git 中用于查看提交历史的命令。它是了解项目开发历史和追踪更改的重要工具。
基本概念
什么是提交历史
提交历史是 Git 仓库中所有提交的记录,包括:
命令语法
1 2 3 4 5 6 7 8 9 10 11
| git log [选项] [提交范围] [--] [路径]
git log
git log branch-name
git log -- file.txt
|
查看帮助文档
常用选项
| 选项 |
说明 |
--oneline |
单行显示每个提交 |
--graph |
以图形方式显示分支 |
--all |
显示所有分支 |
--decorate |
显示分支和标签 |
-n, --max-count=<n> |
只显示最近 n 个提交 |
--since, --after |
显示指定时间之后的提交 |
--until, --before |
显示指定时间之前的提交 |
--author=<pattern> |
按作者过滤 |
--grep=<pattern> |
按提交信息过滤 |
-S<string> |
显示包含指定字符串更改的提交 |
--follow |
跟踪文件重命名 |
--stat |
显示文件更改统计 |
-p, --patch |
显示详细差异 |
--pretty=<format> |
自定义输出格式 |
--abbrev-commit |
使用短提交哈希 |
--date=<format> |
自定义日期格式 |
--name-only |
只显示文件名 |
--name-status |
显示文件名和状态 |
基本使用
1. 基本查看
1 2 3 4 5 6 7 8
| $ git log
$ git log --oneline
$ git log -10
|
2. 图形化显示
1 2 3 4 5 6 7 8
| $ git log --graph --oneline
$ git log --graph --oneline --all
$ git log --graph --oneline --all --decorate
|
3. 按时间过滤
1 2 3 4 5 6 7 8 9 10 11
| $ git log --since="1 week ago"
$ git log --since="2024-01-01"
$ git log --until="2024-12-31"
$ git log --since="7 days ago"
|
4. 按作者过滤
1 2 3 4 5
| $ git log --author="John"
$ git log --author="John\|Jane"
|
5. 按提交信息过滤
1 2 3 4 5
| $ git log --grep="fix bug"
$ git log --grep="^fix"
|
6. 按文件过滤
1 2 3 4 5 6 7 8
| $ git log -- README.md
$ git log -- src/
$ git log --follow -- README.md
|
7. 显示统计信息
1 2 3 4 5 6 7 8 9 10 11
| $ git log --stat
$ git log -p
$ git log --name-only
$ git log --name-status
|
8. 自定义格式
1 2 3 4 5 6 7 8 9 10 11
| $ git log --pretty=format:"%h - %an, %ar : %s"
|
实际应用场景
场景1:查看最近提交
1 2 3 4 5
| $ git log -5 --oneline
$ git log --since="1 week ago" --oneline
|
场景2:查看分支历史
1 2 3 4 5
| $ git log --graph --oneline --all --decorate
$ git log --oneline feature-branch
|
场景3:查找特定提交
1 2 3 4 5 6 7 8
| $ git log --author="John" --oneline
$ git log --grep="bug fix" --oneline
$ git log -S"function_name" --oneline
|
场景4:查看文件历史
1 2 3 4 5 6 7 8
| $ git log -- README.md
$ git log --follow -- README.md
$ git log -p -- README.md
|
场景5:生成报告
1 2 3 4 5
| $ git log --pretty=format:"%h | %an | %ad | %s" --date=short > commits.txt
$ git shortlog -sn
|
常用组合
1. 美观的日志显示
1 2 3 4 5 6
| $ git log --graph --oneline --all --decorate
$ git config --global alias.lg "log --graph --oneline --all --decorate" $ git lg
|
2. 查看特定时间范围
1 2 3 4 5
| $ git log --since="today" --oneline
$ git log --since="1 month ago" --oneline
|
3. 查看两个提交之间的历史
1 2 3 4 5
| $ git log commit1..commit2
$ git log main..feature-branch
|
4. 查看文件更改
1 2 3 4 5
| $ git log -p -- README.md
$ git log --stat -- README.md
|
常见问题和解决方案
问题1:日志输出太长
解决方案:
1 2 3 4 5 6 7 8
| $ git log --oneline
$ git log -10 --oneline
$ git log | less
|
问题2:想查看特定文件的更改
解决方案:
1 2 3 4 5
| $ git log -- file.txt
$ git log --follow -- file.txt
|
问题3:查找包含特定代码的提交
解决方案:
1 2 3 4 5
| $ git log -S"function_name" --oneline
$ git log -G"pattern" --oneline
|
最佳实践
1. 使用别名简化
1 2 3
| $ git config --global alias.lg "log --graph --oneline --all --decorate" $ git config --global alias.ll "log --oneline -10"
|
2. 组合使用选项
1 2
| $ git log --graph --oneline --all --decorate -10
|
3. 导出日志
1 2
| $ git log --pretty=format:"%h | %an | %ad | %s" > log.txt
|
总结
git log 是查看提交历史的核心命令:
- 基本用法:
git log 查看提交历史
- 图形化显示:
git log --graph 显示分支关系
- 过滤查看:按时间、作者、文件等过滤
- 自定义格式:使用
--pretty=format 自定义输出
关键要点:
- ✅ 使用
--oneline 简化输出
- ✅ 使用
--graph 查看分支关系
- ✅ 使用过滤选项查找特定提交
- ✅ 创建别名简化常用命令