来源核对 2026-09-10
离线 HTML · 不执行命令

第 15 章:Git 基础、差异与恢复意识

建议学时:2 小时|状态:命令按本地独立仓库设计

学习目标

  • 初始化仓库并配置身份;
  • 理解工作区、暂存区和提交;
  • 在恢复前先查看差异和状态。

概念图

概念图 / 文本
工作区 → git add → 暂存区 → git commit → 本地历史

初始化

在 Ubuntu Bash 的综合项目目录:

Ubuntu Bash
cd ~/projects/linux-learning-notes
git init
git status
git config user.name "Your Name"
git config user.email "you@example.invalid"

使用示例域名不会发送邮件。若你要公开提交,填写愿意公开的身份。

三个区域

概念图 / 文本
工作区 --git add--> 暂存区 --git commit--> 历史
Ubuntu Bash
git status
git diff
git add README.md
git diff --staged
git commit -m "docs: add project introduction"
git log --oneline --decorate -5

提交前先看 git diff --staged。提交成功不证明应用运行,仍需功能验证。

安全恢复

Ubuntu Bash
git restore --staged FILE
git restore FILE

第一条取消暂存,保留工作区内容;第二条丢弃未提交的文件修改。执行第二条前必须确认差异。不要把 git reset --hard 或 git clean -fd 当作普通清理命令。

.gitignore

忽略可重建产物,不忽略重要源文件:

项目文件 · .gitignore
.DS_Store
*.log
.env

真正的密钥即使被忽略也不应长期明文保存。若密钥已提交,删除文件不能撤销泄露,必须轮换密钥。

实验

完成两次小提交:第一次加入说明,第二次修改标题。使用 git show --stat 和 git diff HEAD~1 比较,不回滚。

预期结果:git log --oneline 至少显示两次提交,git diff HEAD~1 只展示第二次练习中预期的变化。

故障分支

  • Git 不知道身份:只在当前仓库配置教学身份,避免无意修改全局配置。
  • add 了错误文件:用 git restore --staged 取消暂存并保留内容。
  • 准备丢弃改动:先保存 status 和 diff,确认没有他人工作。

自测

  1. git diff 和 git diff --staged 看哪里?
  2. 为什么恢复前先查看 status/diff?
  3. Git 提交成功是否等于网站功能成功?

答案见答案索引。

官方来源

Microsoft:Git on WSL · Git 官方教程