"你有没有经历过这样的场景:你改了代码,但记不清具体改了哪里?或者你提交了代码,但发现提交的不是你想要的?别担心,Git的
git diff命令就是你的'代码侦探',帮你找出所有的'小改动'和'大改动'!"
🌟 为什么git diff是开发者的"代码显微镜"?
想象一下,你正在写一篇重要的论文,修改了几个段落,但不确定具体改了哪些地方。这时候,你需要一个"差异查看器"来帮助你找出所有的修改。Git的git diff命令就是这个"差异查看器",它能帮助你查看工作区和暂存区之间的差异,让你清楚地知道你做了哪些修改。
正如Git的核心设计理念所示:
"Git是一个内容寻址文件系统。这意味着,Git的核心部分是一个简单的键值对数据库。你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索该内容。"
在Git中,git diff命令是查看代码差异的关键工具,它能帮助你:
- 查看未暂存的修改(工作区 vs 暂存区)
- 查看已暂存的修改(暂存区 vs 仓库)
- 避免提交错误的代码
🛠️ git diff vs git diff --staged:关键区别
| 命令 | 查看的差异 | 适用场景 |
|---|---|---|
git diff |
工作区(未暂存) vs 暂存区 | 查看你当前修改但还未暂存的代码 |
git diff --staged |
暂存区 vs 仓库 | 查看你已暂存但还未提交的代码 |
🧠 重点:理解Git的三个区域
在Git中,有三个关键区域:
- 工作区:你正在编辑的文件
- 暂存区 :准备提交的文件(
git add后) - 仓库 :已提交的代码(
git commit后)
git diff和git diff --staged正是用来查看这些区域之间的差异。
🚀 在AtomGit(GitCode)平台上的实操步骤
✅ 步骤1:创建测试项目
bash
# 创建项目文件夹
mkdir git-diff-demo && cd git-diff-demo
# 初始化Git仓库
git init
# 创建测试文件
echo "Initial content" > file.txt
# 添加文件到暂存区
git add file.txt
# 提交初始内容
git commit -m "Initial commit"
✅ 步骤2:使用git diff查看未暂存的修改
bash
# 修改文件内容
echo "Modified content" > file.txt
# 查看工作区和暂存区的差异
git diff
输出示例:
diff --git a/file.txt b/file.txt
index 6d9c4e7..b4b1b30 100644
--- a/file.txt
+++ b/file.txt
@@ -1 +1 @@
-Initial content
+Modified content
✅ 步骤3:使用git diff --staged查看已暂存的修改
bash
# 将修改添加到暂存区
git add file.txt
# 查看暂存区和仓库的差异
git diff --staged
输出示例:
diff --git a/file.txt b/file.txt
index 6d9c4e7..b4b1b30 100644
--- a/file.txt
+++ b/file.txt
@@ -1 +1 @@
-Initial content
+Modified content
✅ 步骤4:提交修改
bash
# 提交修改
git commit -m "Modified file content"
# 查看提交历史
git log --oneline
❌ 常见问题避坑指南
🔴 问题1:git diff没有显示任何内容
原因:你已经将所有修改添加到暂存区,或者没有进行任何修改。
解决:
- 确认你确实有修改的文件
- 确认你没有使用
git add将修改添加到暂存区
🔴 问题2:git diff --staged没有显示任何内容
原因:你没有将任何修改添加到暂存区。
解决 :使用git add将修改添加到暂存区,然后再运行git diff --staged。
🔴 问题3:git diff显示了太多内容
原因:你可能修改了多个文件,或者修改了很大的文件。
解决:
- 使用
git diff --name-only只显示文件名 - 使用
git diff -U5显示5行上下文
💡 为什么需要这两个命令?
在实际开发中,这两个命令非常有用:
git diff:在你修改代码后,想确认自己改了哪些地方,但还没有决定是否要提交时使用。git diff --staged:在你已经将修改添加到暂存区,但想在提交前再次确认修改内容时使用。
🎯 今日小结
| 项目 | 说明 |
|---|---|
git diff |
查看工作区(未暂存)和暂存区之间的差异 |
git diff --staged |
查看暂存区和仓库之间的差异 |
| 核心区别 | git diff看未暂存的修改,git diff --staged看已暂存但未提交的修改 |
| 关键命令 | git diff, git diff --staged |
📅 明日预告:Day 15:Git历史回溯:如何查看和恢复之前的版本git checkout <commit-hash>实战+恢复误删文件
"明天我们将学习如何'穿越'到过去的代码版本,就像使用时间机器一样!你将学会如何恢复误删的文件,以及如何查看项目的完整历史。"
✨ 今日金句 :git diff不是魔法,但它能让你的代码修改变得透明和可控。今天你已经掌握了Git差异查看的核心技能,明天继续加油!