引言
在一个神秘的编程王国里,勇士杰克手握“时光沙漏”,这便是传说中的“GitLog”。每逢城堡代码出现混乱,杰克只需轻唤一声“git log”,便能唤醒历史的记忆碎片。他巧妙运用“–oneline”,让冗长日志浓缩成一句句智慧箴言;凭借“–author”,他能追踪到每段代码背后的英雄;通过“–since”与“–until”,他穿越时空隧道定位特定时期的变更。
面对棘手的bug怪兽,杰克挥舞起“–grep”利剑,精准筛选相关提交;当分支交织宛如迷宫,他激活了“–graph”魔力,揭示出版本变迁的脉络图;而“–patch”则化身为放大镜,助他在浩瀚代码中找到那决定性的改动。
于是乎,“GitLog”不再只是普通的日志工具,而是杰克驾驭版本控制世界的神器,每一次冒险都充满了智谋与精彩。世人皆惊叹:“掌握git log,犹如手持罗盘,在编程旅途中永不迷失方向。”
应用场景及实战技巧
1. 查看提交历史
- 基础使用:
git log
命令是查看Git仓库提交历史的基本工具,它会显示每条提交记录的SHA哈希值、提交者信息、提交日期以及提交消息摘要。
λ git log
commit cd45e8eed1b6cbfccbc6296f7903f42045115ba8 (HEAD -> master, origin/master, origin/HEAD)
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:27:11 2024 +0800
增加user1
commit 169af927650c00102453bee8cd3932650a925a06
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:25:47 2024 +0800
增加user2
....
2. 按时间排序
- 按提交时间逆序排列:默认情况下,
git log
会按照提交时间逆序显示历史记录。
3. 显示格式定制
- 自定义输出格式:使用
--pretty
参数可以指定输出格式,如简洁模式(--pretty=oneline
)、短格式(--pretty=short
)、完整格式(--pretty=full
)或自定义格式(--pretty=format:"..."
)。
λ git log --pretty=format:"%h %s [%an]"
cd45e8e 增加user1 [xxxx]
169af92 增加user2 [xxxx]
9615470 增加user3 [xxxx]
a10b2c9 介绍user4 [jiafang]
51339fd git-demo-test-user4 [jiafang]
1124266 参与贡献7 [xxxx]
7122df2 使用说明7 [xxxx]
...
4. 搜索和过滤
- 按作者筛选:通过
--author
参数查看特定作者的提交记录。
λ git log --author="xxxx"
commit cd45e8eed1b6cbfccbc6296f7903f42045115ba8 (HEAD -> master, origin/master, origin/HEAD)
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:27:11 2024 +0800
增加user1
commit 169af927650c00102453bee8cd3932650a925a06
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:25:47 2024 +0800
增加user2
...
...
- 按提交信息搜索:使用
--grep
参数搜索包含特定关键词的提交信息。
λ git log --grep="安装"
commit 5477cffb3ab7f600f25043afdb98147b7f9b8a80
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:17:46 2024 +0800
安装教程7
commit 81e0fa6721011b18cf942e768d580afea49c5039
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:12:43 2024 +0800
安装教程6
...
5. 时间区间筛选
- 按时间段筛选:使用
--since
和--until
参数筛选特定时间段内的提交。
λ git log --since="last week" --until="yesterday"
commit cd45e8eed1b6cbfccbc6296f7903f42045115ba8 (HEAD -> master, origin/master, origin/HEAD)
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:27:11 2024 +0800
增加user1
commit 169af927650c00102453bee8cd3932650a925a06
Author:xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:25:47 2024 +0800
增加user2
....
6. 查看单个文件的修改历史
- 查看文件历史:通过
--follow
参数可以追踪文件即使被重命名也能看到完整历史,结合文件名查看文件修改历史。
λ git log --follow -- README.md
commit cd45e8eed1b6cbfccbc6296f7903f42045115ba8 (HEAD -> master, origin/master, origin/HEAD)
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:27:11 2024 +0800
增加user1
commit 169af927650c00102453bee8cd3932650a925a06
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:25:47 2024 +0800
增加user2
....
7. 分页显示
- 配合less分页浏览:将输出结果通过管道传递给
less
命令,以便分页查看。
git log | less
8. 显示提交图表
- 显示提交图形:结合
--graph
参数可以查看带有图形表示的提交历史。
λ git log --graph --oneline
* cd45e8e (HEAD -> master, origin/master, origin/HEAD) 增加user1
* 169af92 增加user2
* 9615470 增加user3
* a10b2c9 介绍user4
...
- 图形化显示当前分支的提交日志及每次提交的变更内容
git log --graph --patch
- 形化显示所有分支的提交日志
git log --graph --oneline --all
- 图形化显示所有分支的提交日志及每次提交的变更内容
git log --graph --patch --all
9. 按提交之间的关系排序
- topo-order排序:使用
--topo-order
参数按提交之间的拓扑顺序而非提交时间排序。
git log --topo-order
10. 查看分支合并情况
- 查看合并记录:结合
--merges
参数只显示合并提交。
λ git log --merges
commit ce4a73f250105856f583be0cce899c509422ae11
Merge: ccad936 ece36a5
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 11:04:15 2024 +0800
Merge branch 'master' of https://e.coding.net/xxx/gittest/git-test-demo
commit 73f77c0c21b9afd62cc21d944ff1369592ced378
Merge: a103687 c2ac404
Author: xxxx <aaaa@qq.com>
Date: Wed Mar 6 10:56:12 2024 +0800
Merge branch 'master' of https://e.coding.net/xxxx/gittest/git-test-demo
11. 日期格式化
- 显示完整的日期和时间: 结合
--date=iso
参数显示。这会以 ISO 8601 标准格式显示日期和时间,如2024-02-28 12:34:56 +0800
。
λ git log --date=iso
commit 169af927650c00102453bee8cd3932650a925a06
Author: xxxx <aaaa@qq.com>
Date: 2024-03-06 11:25:47 +0800
增加user2
...
- 仅显示日期: 结合
--date=short
参数显示。这会以短日期格式显示日期,如2024-02-28
。
λ git log --date=short
commit 169af927650c00102453bee8cd3932650a925a06
Author: love2157dream <2390779141@qq.com>
Date: 2024-03-06
增加user2
- 自定义格式化字符串: 结合
--date=format:
参数显示。
λ git log --date=format:"%Y-%m-%d %H:%M:%S"
commit 91d3e84f197e9a033ae04db78e9212eae5b12c2f
Author: love2157dream <2390779141@qq.com>
Date: 2024-03-06 11:25:47
增加user2
总结
通过这些丰富的应用场景和实战技巧,git log
不仅仅是一个查看历史记录的工具,更是深入理解项目演化过程的强大助手。
喜欢的话帮忙点个赞 + 关注吧,将持续更新 Git
相关的文章,还可以关注我的公众号 梁三石FE
,感谢您的关注~