跳过正文
  1. 教程/
  2. Git 入门到实操:新手从 0 到会用提交、分支、回退和远程仓库/

Git 查看仓库状态与提交历史

·3473 字·7 分钟
Evan Wu
作者
Evan Wu
记录 AI、技术实践、效率工具、项目经验与学习思考。
目录
Git Mastery - 系列专栏
✦ 7: 本文

在使用 Git 管理代码时,经常会遇到这些问题:

  • 我现在在哪个分支?
  • 哪些文件被修改了?
  • 哪些文件还没有提交?
  • 最近提交了哪些内容?
  • 某一次提交到底改了什么?
  • 之前切换分支或回退版本的记录还能不能看到?

这些问题都可以通过 Git 的查看类命令解决。

本文会用比较通俗的方式,介绍如何查看 Git 仓库状态与提交历史。即使你刚开始学习 Git,也可以跟着一步一步理解。

一、查看仓库当前状态
#

1. 查看完整状态:git status
#

最常用的命令是:

git status

这个命令可以理解为:让 Git 告诉你当前仓库发生了什么。

它会告诉你:

  • 当前在哪个分支
  • 哪些文件被修改了
  • 哪些文件已经加入暂存区
  • 哪些文件还没有被 Git 管理
  • 当前是否有内容需要提交

例如执行:

git status

可能会看到类似结果:

On branch main
Your branch is up to date with 'origin/main'.

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        content/zh/tutorials/git/07-status-and-log.md

nothing added to commit but untracked files present (use "git add" to track)

这段信息的意思是:

你现在在 main 分支上。

你的本地 main 分支和远程 origin/main 是同步的

Git 发现了一个新文件content/zh/tutorials/git/07-status-and-log.md但是这个文件还没有被 Git 管理,也就是还没有执行 git add

当前没有可以提交的内容,因为新文件还没有加入暂存区。

简单来说,git status 就像是查看仓库的“体检报告”。

2. 简洁查看状态:git status -s
#

如果你觉得 git status 输出太长,可以使用简洁版本:

git status -s

也可以写成:

git status --short

示例输出:

?? content/zh/tutorials/git/07-status-and-log.md

这里的含义是:

输出开头的 ?? 表示这是一个新文件,Git 还没有跟踪。

3. 常见简洁状态说明
#

简介状态输出格式大致是:

XY 文件名

其中:

X 表示暂存区状态,也就是有没有执行过 git add

Y 表示工作区状态,也就是文件在本地有没有继续修改。

常见状态如下:

状态暂存区工作区含义
??未跟踪未跟踪新文件,Git 还没有跟踪
A␠新增无变化新文件,已经加入暂存区
␠M无变化修改文件被修改了,但还没有加入暂存区
M␠修改无变化文件被修改了,并且已经加入暂存区
MM修改修改文件加入暂存区后,又继续被修改了
␠D无变化删除文件被删除了,但还没有加入暂存区
D␠删除无变化文件删除操作已经加入暂存区
R␠重命名无变化文件重命名已经加入暂存区
C␠复制无变化文件复制已经加入暂存区
UU冲突冲突文件有冲突,需要手动解决

为了看清楚状态码里的空格,上面用 表示一个空格。实际执行 git status -s 时,不会显示 这个符号。

笔记

简单记忆:第一个位置表示暂存区,第二个位置表示工作区。字母出现在第一个位置,通常说明已经 git add;字母出现在第二个位置,通常说明还没有加入暂存区。

这个命令适合在日常开发中快速看一眼当前仓库的变化以及状态。


二、查看文件修改内容
#

1. 查看未暂存的修改:git diff
#

git status 只能告诉你“哪些文件变了”,但不会告诉你“具体哪里变了”。

如果你想看具体修改内容,可以使用:

git diff

这个命令会显示工作区里还没有加入暂存区的修改。

比如你修改了 README.md,运行:

git diff README.md

就可以看到这个文件具体新增了哪些内容、删除了哪些内容。

可以这样理解:

git status 是看“哪些文件变了”。

git diff 是看“这些文件到底改了什么”。

2. 查看已暂存的修改:git diff –staged
#

如果你已经执行过:

git add README.md

那么这个文件的修改就进入了暂存区。

这时再执行:

git diff

可能看不到刚才的修改。

因为 git diff 默认查看的是“还没有暂存”的内容。

如果要查看已经暂存、准备提交的内容,可以使用:

git diff --staged

也可以使用:

git diff --cached

这两个命令作用基本一样。


三、查看提交历史
#

1. 查看完整提交历史:git log
#

想看之前提交过哪些内容,可以使用:

git log

这个命令会列出当前分支的提交历史。

每条提交记录通常包括:

  • 提交 ID
  • 提交作者
  • 提交时间
  • 提交说明

示例:

commit 5d6d3c6b2b1e2af7e5ac0402c38da73072d571de
Author: Evan Wu <info@evansama.com>
Date:   Sat Jun 13 23:10:10 2026 +0800

    new post

其中 commit 后面那一长串字符就是提交 ID,也叫 commit hash。

以后如果你想查看某一次提交、回退到某一次提交,通常都会用到这个 ID。

如果日志很多,可以使用 git log -5 查看最近五次提交。

检查完毕按键盘上的 q 退出日志查看。

2. 一行显示提交历史:git log –oneline
#

默认的 git log 信息比较多,不太适合快速浏览。

更常用的是:

git log --oneline

示例:

a1619e7 new post
5d6d3c6 new post
3e316dd git index change
698384a git 安装文章更新
d3d9931 优化面包屑导航,文章更新

这样每次提交只显示一行。

左边是简短版提交 ID,右边是提交说明。

这个命令非常适合快速了解项目最近做了哪些修改。

3. 查看某一次提交的详细内容:git show
#

如果你想知道某一次提交到底改了什么,可以使用:

git show <commit-id>

例如:

git show a1b2c3d

这个命令会显示这次提交的详细信息,包括:

  • 谁提交的
  • 什么时候提交的
  • 提交说明是什么
  • 修改了哪些文件
  • 文件中具体改了哪些代码

如果只想看这次提交影响了哪些文件,可以使用:

git show --stat a1b2c3d

它会显示比较简洁的统计信息,比如哪些文件被修改,以及新增、删除了多少行。

4. 查看某位作者的提交:git log –author
#

如果项目是多人协作开发,有时我们只想查看某个人提交过哪些内容。

可以使用:

git log --author="Evan Wu"

这条命令会筛选出作者名称中包含 Evan Wu 的提交记录。

5. 查看某个文件的历史记录 git log – 文件名
#

有时候我们不想看整个项目的提交历史,只想看某个文件的变化历史。

比如只查看 README.md 的提交记录,可以使用:

git log -- README.md

如果想看这个文件每次提交具体改了什么,可以使用:

git log -p -- README.md

这里的 -p 表示显示详细修改内容。

这个命令适合用来追踪某个文件为什么变成现在这样。


四、查看分支和合并关系
#

1. 图形方式查看分支历史:git log –oneline –graph –all
#

如果项目中有多个分支,可以使用:

git log --oneline --graph --all

这个命令会用简单的字符图形显示提交之间的关系。

示例:

* 38029b8 separate search index by language
*   1d45f9e Merge branch 'blowfish-rebuild'
|\
| * 67d5cbe finalize blowfish rebuild
| * e0e9b0e update gitignore for cloudflare pages deployment
| * 8b60a89 configure blowfish homepage and basic layout
| * 288bffb migrate site from papermod to blowfish
| * 2fd59d0 init hugo modules for blowfish rebuild
|/
* 3e960fd git/install.md update
* c9a3c09 更新中文菜单,添加git教程文章
* 7966fe8 add new

这里的 * 表示一次提交。

线条表示分支之间的关系。

|   表示分支线
\   表示分支分出去或合并回来
|/  表示分支合并回主线

如果你想知道某个分支是从哪里分出来的,或者两个分支什么时候合并过,这个命令很有用。

2. 查看分支列表:git branch
#

查看本地分支,可以使用:

git branch

示例:

* main
  dev
  feature-login

* 的分支表示你当前所在的分支。

如果想查看本地和远程的所有分支,可以使用:

git branch -a

如果想查看本地分支和远程分支的对应关系,可以使用:

git branch -vv

示例:

* main  a1b2c3d [origin/main] update README
  dev   7e6f5d4 [origin/dev] fix bug

这可以帮助你判断当前分支是否关联了远程分支。


五、查看本地操作记录
#

1. 查看本地操作记录:git reflog
#

git log 查看的是提交历史。

但有时候,我们还想知道自己最近做过哪些 Git 操作,比如:

  • 切换过哪些分支
  • 回退过哪些版本
  • reset 到了哪里
  • commit 之后 HEAD 怎么移动过

这时可以使用:

git reflog

示例:

a1b2c3d HEAD@{0}: commit: update README
9f8e7d6 HEAD@{1}: checkout: moving from dev to main
7e6f5d4 HEAD@{2}: commit: fix bug

可以把 git reflog 理解为 Git 在本地记录的一份“操作日志”。

它在误删提交、错误回退版本时特别有用。

比如你不小心执行了错误的 reset,有时可以通过 git reflog 找回之前的提交位置。

2. git log 和 git reflog 的区别
#

很多初学者会混淆 git loggit reflog

简单来说:

git log 主要看提交历史。

git reflog 主要看本地 HEAD 的移动记录。

也就是说,git log 更像是项目的正式历史记录。

git reflog 更像是你本机上的 Git 操作记录。

需要注意的是,git reflog 是本地记录,不一定会出现在别人的电脑上。


六、常用命令汇总
#

命令作用
git status查看当前仓库状态
git status -s用简洁方式查看仓库状态
git diff查看还没有暂存的修改
git diff --staged查看已经暂存的修改
git log查看提交历史
git log --oneline一行显示一条提交记录
git log --oneline --graph --all用图形方式查看分支历史
git show <commit-id>查看某次提交的详细内容
git show --stat <commit-id>查看某次提交的文件修改统计
git log -- <file>查看某个文件的提交历史
git log -p -- <file>查看某个文件每次提交的具体修改
git branch查看本地分支
git branch -a查看所有分支,包括远程分支
git branch -vv查看分支和远程分支的对应关系
git reflog查看本地 HEAD 操作记录
git log -n 5 --oneline查看最近 5 条提交
git log --author="作者名" --oneline查看某位作者的提交记录
git log --since="1 week ago" --oneline查看最近一周的提交
git log main --oneline查看指定分支的提交历史

七、推荐日常使用命令
#

日常开发中,下面这几个命令最常用:

git status -s
# 简洁查看当前仓库状态,比如哪些文件被修改、新增或删除。

git diff
# 查看工作区中还没有加入暂存区的具体修改内容。

git log --oneline --graph --all
# 用简洁的图形方式查看所有分支的提交历史和合并关系。

git branch -vv
# 查看本地分支列表,以及它们对应的远程分支和最新提交信息。

它们可以帮助你快速了解:

当前有哪些文件被修改了。

这些文件具体改了什么。

最近有哪些提交。

当前分支和远程分支是否对应。


总结
#

查看 Git 仓库状态与历史,是学习 Git 时非常基础也非常重要的一部分。

如果你只是想知道当前项目有没有改动,可以使用:

git status

如果你想知道具体改了什么,可以使用:

git diff

如果你想查看提交历史,可以使用:

git log

如果你想查看某一次提交的详细内容,可以使用:

git show

如果你想查看本地操作记录,可以使用:

git reflog

掌握这些命令之后,你就可以更清楚地知道 Git 仓库当前处于什么状态,也能更方便地追踪项目的修改历史。

Git Mastery - 系列专栏
✦ 7: 本文