git log
语法
git log [<options>] [<revision range>] [[--] <path>…]
- options
参数 | 含义 |
---|---|
-L <start>,<end>:<file> |
查看指定文件的开始行到结束行的提交历史 |
-L :<funcname>:<file> |
查看指定文件的函数的提交历史 |
常用命令
git log –pretty # 使用其他格式显示历史提交信息. 可用 oneline/short/full/fuller/format
# 按行显示每次提交 git log --pretty=oneline # 定制要显示的记录格式 git log --pretty=format
git log –stat # 显示每次更新的文件修改统计信息
git log –graph # 显示 ASCII 图形表示的分支合并历史
git log -p # 按补丁格式显示每个更新之间的差异
# 比较本地 master 分支和 origin/master 分支的差别 git log -p master..origin/master # 显示最近两次提交的差别 git log -p -2
git log –decorate # 查看各个分支当前所指的对象
# 输出提交历史、各个分支的指向以及项目的分支分叉情况 git log --oneline --decorate --graph --all # 显示简短且唯一的 SHA-1 值 git log --abbrev-commit
git log -(n) # 仅显示最近的 n 条提交
git log –since, –after # 仅显示指定时间之后的提交
git log –until, –before # 仅显示指定时间之前的提交
git log –author # 仅显示指定作者相关的提交
git log –committer # 仅显示指定提交者相关的提交
git log –grep # 仅显示含指定关键字的提交
git log -S # 仅显示添加或移除了某个关键字的提交
git log -g # 查看类似于 git log 输出格式的引用日志信息
引用日志 reflog
- 工作时, git 会在后台保存一个引用日志(reflog), 引用日志记录了最近几个月你的 HEAD 和分支引用所指向的历史
- 每当 HEAD 指向的位置发生了变化, git 就会将这个信息存储到引用日志
引用日志只存在于本地仓库, 一个记录你在你自己的仓库里做过什么的日志
# 查看引用日志 git reflog # 使用`@{n}`引用 reflog 中输出的提交记录 git show HEAD@{5} # 查看 master 分支在昨天的时候指向了哪个提交 git show master@{yesterday}
祖先引用是另一种指明一个提交的方式. 如果在引用的尾部加上一个
^
, git 会将其解析为该引用的上一个提交# 查看上一个提交, 也就是 “HEAD 的父提交” git show HEAD^ # d921970^2 代表 “d921970 的第二父提交” 这个语法只适用于合并(merge)的提交 git show d921970^2 # HEAD^^^, 也是第一父提交的第一父提交的第一父提交 git show HEAD~3 # HEAD^^^, 也是第一父提交的第一父提交的第一父提交的第二父提交 git show HEAD~3^2