Git 提供了多种方式来查看修改的代码,下面我详细介绍各种查看代码修改的方法。

一、查看未暂存的修改

1. 查看所有未暂存的修改

git diff

2. 查看特定文件的未暂存修改

git diff <文件名>
# 示例
git diff main.py
git diff src/utils.py

3. 查看特定目录的修改

git diff <目录路径>
# 示例
git diff src/

二、查看已暂存的修改

1. 查看所有已暂存的修改

git diff --staged
# 或者
git diff --cached

2. 查看特定文件已暂存的修改

git diff --staged <文件名>
# 示例
git diff --staged main.py

三、查看工作区与最新提交的差异

1. 查看所有修改(包括暂存和未暂存)

git diff HEAD

2. 查看特定文件的所有修改

git diff HEAD <文件名>

四、查看提交之间的差异

1. 查看最新提交的修改

git show

2. 查看特定提交的修改

git show <提交哈希>
# 示例
git show abc123
git show HEAD~1  # 查看上一个提交

3. 比较两个提交之间的差异

git diff <提交1> <提交2>
# 示例
git diff abc123 def456
git diff HEAD~2 HEAD    # 比较前两个提交与当前提交

4. 比较两个分支的差异

git diff <分支1>..<分支2>
# 示例
git diff main..develop
git diff origin/main..HEAD  # 比较远程main与本地当前分支

五、更友好的查看方式

1. 简化的状态查看

git status -v
# 这会显示状态并在下面显示diff

2. 查看修改的文件列表(不显示具体内容)

git diff --name-only
git diff --name-only <提交1> <提交2>

3. 查看修改统计

git diff --stat
git diff --stat <提交1> <提交2>

输出示例:

src/main.py  | 5 ++++-
src/utils.py | 3 ++-
2 files changed, 6 insertions(+), 2 deletions(-)

六、高级查看技巧

1. 逐行查看(分页显示)

git diff | less

2. 查看单词级别的差异(而不是行级别)

git diff --word-diff

3. 查看颜色化的差异

git diff --color-words

4. 查看指定作者的修改

git log --author="作者名" -p

5. 查看某个时间段的修改

git log --since="2024-01-01" --until="2024-01-31" -p

七、实际使用示例

场景 1:日常开发中查看修改

# 开发过程中随时查看未暂存的修改
git diff

# 查看特定文件的修改
git diff src/user_service.py

# 暂存部分文件后查看已暂存的修改
git add src/user_service.py
git diff --staged

# 查看所有修改(包括暂存和未暂存)
git diff HEAD

场景 2:代码审查前检查修改

# 查看本次功能开发的所有修改
git diff main..feature/new-auth

# 查看统计信息
git diff --stat main..feature/new-auth

# 查看具体修改内容
git diff main..feature/new-auth

场景 3:排查问题时查看历史修改

# 查看最近3次提交的修改
git show HEAD~2..HEAD

# 查看特定文件的修改历史
git log -p src/problem_file.py

# 查看谁在什么时候修改了某行代码
git blame src/problem_file.py

八、Git 图形化工具查看

1. 使用 gitk(内置图形化工具)

gitk
gitk <文件名>          # 查看特定文件的历史
gitk --since="2 weeks ago"

2. 使用 IDE 集成

在 PyCharm、VSCode 等 IDE 中:

  • Git Tab:可视化的修改查看
  • 版本对比:与上一个版本对比
  • 注解/Blame:查看每行代码的修改历史

九、实用的别名设置

为了更方便地查看修改,可以设置 Git 别名:

# 添加到 ~/.gitconfig
[alias]
    # 查看简洁的diff
    d = diff
    # 查看已暂存的diff
    ds = diff --staged
    # 查看所有修改
    dh = diff HEAD
    # 查看统计
    dst = diff --stat
    # 查看最近一次提交的修改
    last = show --name-only

使用方式:

git d
git ds
git dh
git dst
git last

十、完整工作流程示例

# 1. 开始开发前,查看当前状态
git status

# 2. 开发过程中,随时查看修改
git diff

# 3. 暂存文件前,查看具体文件的修改
git diff main.py

# 4. 暂存文件后,确认暂存的内容
git diff --staged

# 5. 提交前,最后确认所有修改
git diff HEAD

# 6. 提交后,查看这次提交的修改
git show

# 7. 推送前,比较与远程的差异
git diff origin/main..HEAD

总结

命令 用途 场景
git diff 查看未暂存修改 开发中随时检查
git diff --staged 查看已暂存修改 提交前确认
git diff HEAD 查看所有修改 最终检查
git show 查看最新提交 提交后验证
git diff branch1..branch2 比较分支差异 代码审查
git diff --stat 查看修改统计 快速概览

掌握这些命令可以更好地理解代码变更,提高代码审查和调试的效率。