[译]git log
git log
git log命令用来显示提交的快照. 能列出来你项目的历史, 能过滤和搜索你指定的一些修改. git status能让你检查工作目录和stage区的状态, git log只提供被commited到head的一些历史信息.
用法
1 | git log |
使用默认格式展示这个项目的commit历史. 如果输出超过一屏, 可以使用空格键来展示下一屏, 或者按q推出.
1 | git log -n <limit> |
限制只展示最近<limit>条commit历史. 如果<limit>为3那么只显示最近的3次commit历史.
git log --online |
压缩每个commit到一行.
1 | git log --stat |
输出包括了git log的信息, 并且额外显示了哪些文件被修改了, 哪一行是新加的或者被删除了.
1 | git log -p |
有点类似于git log --state, 但是git log -p提供的信息更加详细, 他把修改的内容也给展现出来了.
git log --author= "<pattern>" |
搜索指定作者的commit. <pattern>可以是正则表达式.
1 | git log --grep= "<pattern>" |
搜索commit描述匹配<pattern>的commit. <pattern>同样可以是正则表达式.
1 | git log <since>..<until> |
显示<since>到<until>之间的commit. <since>和<until>这两个参数可以是commit ID, branch名字, HEAD.
1 | git log <file> |
只显示指定文件的commit.
git log --graph --decorate -- online |
这个非常用用. --graph会在最左边输出一个基于文本的符号(为了好看, 或者分类).
--decorate会把branch的名字和tag的名字也显示出来.
--online会把每个commit信息压缩成一行.
讨论
commit 3157ee3718e180a9476bf2e5cab8e3f1e78a73b7 Author: John Smith |
第一行commit后面的40个字符是代表这一次commit的SHA-1校验码, 他是唯一的. 这个校验码有两个用途. 第一, 确保commit的完整--如果他被污染了, commit会生成一个不同的校验码. 第二, 作为commmit的一个唯一的ID号.
这个ID能在一些命令中使用, 例如git log <since>..<untile>(git log 3157e..5ab91).
~符号用来表示一个相对于某个commit之前的相对位置的commit. 例如, 3157e~1表示在3157e之前的一个commit, HEAD~3表示当前commit之前的第三个commit.
例子
option可以组合使用.
git log --author= "John Smith" -p hello.py |
完整显示John Smith对hello.py这个文件所做的修改.
..符号可用于比较branch. 下面的例子展示了some-feature中有但是master中没有的commit
1 | git log --oneline master..some-feature |
【推荐】FlashTable:表单开发界的极速跑车,让你的开发效率一路狂飙
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么PostgreSQL不自动缓存执行计划?
· 于是转身独立开发者
· C#.Net筑基-泛型T & 协变逆变
· dotnet 代码调试方法
· DbContext是如何识别出实体集合的
· 【Cursor保姆级教程】零基础小白从安装到实战,手把手教你玩转AI编程神器!
· Cursor 实战万字经验分享,与 AI 编码的深度思考
· MySQL查询执行顺序:一张图看懂SQL是如何工作的
· 用 AI 制作超长视频,保姆级教程!
· GIM 1.5发布了! 支持Windows系统了