CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
Git 版本控制入门/课时/状态查看与提交历史
RawBlame
课时目录8 节

Git 版本控制入门

  1. 01版本控制与 Git 是什么
  2. 02安装 Git 与首次配置
  3. 03创建仓库与第一次提交
  4. 04状态查看与提交历史
  5. 05分支创建与切换
  6. 06合并分支与冲突处理
  7. 07远程仓库与 push/pull
  8. 08日常协作工作流小结

状态查看与提交历史

20 分钟

状态查看与提交历史

日常用 Git,80% 的时间是在看「现在改了什么」和「以前改过什么」。git status 和 git log 是最常用的两个命令。

学习目标

  • 读懂 git status 三种状态:未跟踪、已修改、已暂存
  • 用 git log 及其常用参数翻历史
  • 使用 .gitignore 排除 node_modules 等目录

git status 详解

在已有提交的仓库里改文件后:

git status

典型输出片段:

On branch main
Changes not staged for commit:
  modified:   README.md

Untracked files:
  notes.txt
状态含义下一步
Untracked新文件,Git 未跟踪git add 后开始跟踪
modified(未 staged)已跟踪文件被改,未进暂存区git add 或 git restore 丢弃
staged已 add,等待 commitgit commit

查看具体改了哪几行:

git diff              # 工作区 vs 暂存区
git diff --staged     # 暂存区 vs 最后一次 commit

撤销与恢复(未 push 前)

# 丢弃工作区对某文件的修改(危险,不可恢复)
git restore README.md

# 把文件从暂存区撤出,保留工作区修改
git restore --staged README.md

已 commit 的内容用 git log 找 commit id,再用 git revert 或 git reset(团队仓库慎用 reset)。

git log 常用写法

git log                    # 完整历史
git log --oneline          # 一行一条,适合快速浏览
git log -5                 # 最近 5 条
git log --graph --oneline --all   # 分支图(学完分支后更有用)
git log -p README.md       # 某文件的变更历史
git log --author="柏风"    # 按作者筛(示例)

每条 commit 的 SHA(如 a1b2c3d)是唯一 id,后面合并、回退都会用到前 7 位通常就够。

.gitignore

不要把依赖和构建产物提交进仓库。在项目根创建 .gitignore:

# Node / 前端
node_modules/
.next/
dist/
release/

# Java
target/
*.class

# 环境与 IDE
.env
.env.local
.idea/
*.log

保存后:

git add .gitignore
git commit -m "chore: add gitignore"

已被跟踪的文件不会因为加入 .gitignore 而消失,需先 。

git rm --cached 文件名

构建产物(如 dist/、release/、target/)不应进 Git 历史,应写在 .gitignore 里,由 CI 或本地构建生成。

练习

  • 故意修改、暂存、再修改同一文件,用 git status 和 git diff 观察差异
  • 用 git log --oneline 列出至少 3 条 commit
  • 为练习仓库添加 .gitignore,排除至少一个临时文件

小结

status 看现在,log 看过去,diff 看细节。 下一课在分支上并行开发,避免直接在 main 上堆所有改动。

加载本节练习…
← 上一课创建仓库与第一次提交下一课 →分支创建与切换