git diff
git diff
是 Git 版本控制系统中用于比较文件差异的核心命令,可以显示工作目录、暂存区(Index)和仓库历史之间的变化。
通过对比不同版本或状态
的文件内容,帮助开发者理解代码变更。
比较工作目录与暂存区
运行以下命令查看工作目录中尚未暂存的修改(与最后一次 git add
相比的差异):
git diff
比较暂存区与最新提交
添加 --cached
或 --staged
参数,显示已暂存但未提交的变更(与最新提交 HEAD
的差异):
git diff --cached
比较工作目录与最新提交
直接对比工作目录和最新提交(跳过暂存区):
git diff HEAD
比较两个历史提交
通过提交哈希或分支名对比两个历史版本。以下命令比较 commitA
和 commitB
的差异:
git diff commitA commitB
比较分支差异
对比两个分支(如 main
和 feature
)的代码差异:
git diff main..feature
统计变更行数
添加 --stat
参数仅显示变更统计(增删行数)而非具体内容:
git diff --stat
忽略空格变化
使用 -w
参数忽略空格差异,聚焦实质性代码变更:
git diff -w
输出差异到文件
将差异结果重定向到文件(如 changes.diff
),便于分享或存档:
git diff > changes.diff
代码示例解析差异
以下 Python 脚本模拟 git diff
的部分逻辑,对比两个文本文件的差异:
import difflibdef compare_files(file1, file2):with open(file1, 'r') as f1, open(file2, 'r') as f2:diff = difflib.unified_diff(f1.readlines(),f2.readlines(),fromfile=file1,tofile=file2)print(''.join(diff))compare_files('old_version.py', 'new_version.py')
典型工作流程示例
-
修改文件后检查变更
在本地编辑代码后,立即运行git diff
确认修改内容是否符合预期。 -
提交前的复审
执行git diff --cached
确保暂存区的变更准备就绪。 -
分支合并前检查
使用git diff main..feature
预览即将合并的分支差异,避免冲突。 -
版本回退验证
通过git diff HEAD~1 HEAD
检查最近一次提交的改动,确认是否需要回退。