>> >> >> Reference << << << <<<<<<Ref>>>>>>
log vs status
Modified: 2025-12-31 | Author:ljf12825

git log

git log的作用是显示当前分支(或指定范围)的提交历史

git log

默认会显示

常用参数

参数作用示例
--oneline每个提交一行(短哈希 + 信息)git log --oneline
--graph以 ASCII 树形显示分支合并git log --graph --oneline
--decorate显示标签和分支名git log --decorate
-n <num>只显示最近 N 条记录git log -5
--since / --until按日期过滤git log --since="2025-08-01"
--author按作者过滤git log --author="Jeff"
<start>..<end>显示两个提交间的记录git log v1.0..v2.0
-p显示每个提交的代码改动git log -p
--stat统计每个提交改动的文件和行数git log --stat

示例
分支历史

git log --graph --oneline --decorate

可以直观看到分支和合并情况

底层原理

git log的底层原理是从HEAD开始,沿着父提交(parent commit)链回溯,读取提交对象(commit object)和树对象(tree object)

git status

git status显示工作区(Working Directory)和暂存区(Staging Area)相对于仓库(HEAD)的改动

git status

常见输出包括:

常用参数

参数作用示例
-s / --short简洁输出(两列状态码)git status -s
-b显示分支信息(short 模式下)git status -sb

git status -s状态码说明

M file1.txt   # 修改但未暂存(工作区改动)
M  file2.txt   # 修改且已暂存
A  file3.txt   # 新增且已暂存
?? file4.txt   # 未跟踪文件

两列含义

底层原理

git status比较三份快照:

  1. HEAD(最新提交)
  2. 暂存区(.git/index)
  3. 工作区对比 它会用哈希比较 + 文件时间戳优化,保证速度快