Git怎么查看分支之间的差异_Git如何用diff对比两个分支的代码【命令】

胖宇吖_9359

胖宇吖_9359

2026-03-24

589人浏览

原创

git diff 无输出通常因分支未提交变更或本地未同步远程分支;应先 git fetch,再用 git diff origin/main origin/feature 或 git log main..feature 查看差异。

git怎么查看分支之间的差异_git如何用diff对比两个分支的代码【命令】

git diff 比较两个分支时,为什么没看到任何输出?

默认情况下 git diff branch1 branch2 是比较两个分支**最新提交的快照差异**,但如果你只改了某个文件却没 git add 或 git commit,它不会出现在 diff 里——它压根不在任一分支的 HEAD 中。

常见错误现象:git diff main feature 返回空白,其实是因为 feature 分支还没提交任何变更,或者你本地没拉取最新远程分支(比如 origin/main 和本地 main 已不同步)。

  • 先确保分支都已更新:git fetch,再用 git diff origin/main origin/feature 避免本地分支陈旧
  • 如果想看「feature 相对于 main 多出了哪些提交」,用 git log main..feature 更直接
  • git diff 默认不递归比较子模块,如有需要加 --submodule

git diff --name-only 和 --stat 的实际用途区别

--name-only 只列文件路径,适合快速确认“动了哪几个文件”;--stat 多一行统计(增删行数),适合粗略评估改动规模。它们都不显示具体代码变化,但能避免刷屏。

使用场景:CI 脚本里判断是否需要跑某类测试,常配合 grep 过滤路径:git diff --name-only main feature | grep "^src/utils/"。

ClickHouse GitHub Forensics
ClickHouse GitHub Forensics

通过ClickHouse查询GitHub事件数据,用于供应链调查、行为者画像和异常检测。适用于调查基于GitHub的攻击,...

下载
  • --name-only 输出无前缀,每行一个路径,结尾无冒号或空格,方便管道处理
  • --stat 最后一行是汇总,如 3 files changed, 12 insertions(+), 4 deletions(-),注意括号是字面量,不是正则元字符
  • 二者都不受 .gitignore 影响——被忽略但已跟踪的文件仍会出现在结果中

对比时出现 “fatal: Not a valid object name” 错误

这个错误通常是因为分支名拼错、分支不存在于当前仓库,或你用了远程分支名但没 git fetch 过。

例如输入 git diff origin/dev origin/main 报错,很可能 origin/dev 根本没被 fetch 下来(远程有 dev 分支,但本地 refs/remotes/origin/dev 不存在)。

  • 运行 git ls-remote --heads origin 看远程有哪些分支名(原始拼写)
  • 运行 git branch -r 看本地已知的远程跟踪分支,确认名字完全一致(注意大小写、斜杠)
  • 如果确认分支存在但没同步,执行 git fetch origin dev 单独拉取,而不是等下次全量 fetch

diff 结果里中文路径乱码或显示为 \344\270\255\346\226\207?

这是 Git 在终端未正确识别编码导致的,不是 diff 本身的问题。Linux/macOS 终端一般用 UTF-8,但 Git 默认可能按 locale 解析路径名;Windows Git Bash 则容易卡在 GBK/UTF-8 混合环境。

临时解决:加 --no-pager 避免 less 干预编码,或设置 Git 配置让其强制用 UTF-8 处理路径:git config --global core.precomposeUnicode true(macOS 必开),Windows 用户建议设 core.autocrlf=false 并统一用 UTF-8 编辑器。

  • 检查当前 locale:locale,确保 LANG 和 LC_ALL 含 UTF-8
  • Git 2.30+ 对 Windows WSL 支持更好,老版本遇到中文路径建议升级
  • 路径乱码不影响 diff 内容比对逻辑,只是显示问题;如果要用脚本解析输出,优先用 --name-only -z(null 分隔)代替换行分隔
分支差异的核心不是命令多难记,而是得清楚你在比「谁的快照」和「谁的引用」。很多人卡在以为 main 就等于 origin/main,其实它们可以差好几个 commit。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

git

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Sass和less的区别
Sass和less的区别

Sass和less的区别有语法差异、变量和混合器的定义方式、导入方式、运算符的支持、扩展性等。本专题为大家提供Sass和less相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.12

2227

5

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

2023.09.22

529

3

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

2024.03.01

1658

6

自建git服务器
自建git服务器

git服务器是目前流行的分布式版本控制系统之一,可以让多人协同开发同一个项目。本专题为大家提供自建git服务器相关的各种文章、以及下载和课程。

2023.07.05

5199

9

git和svn的区别
git和svn的区别

git和svn的区别:1、定义不同;2、模型类型不同;3、存储单元不同;4、是否拥有全局版本号;5、内容完整性不同;6、版本库不同;7、克隆目录速度不同;8、分支不同。php中文网为大家带来了git和svn的相关知识、以及相关文章等内容。

2023.07.06

1600

6

git撤销提交的commit
git撤销提交的commit

Git是一个强大的版本控制系统,它提供了很多功能帮助开发人员有效地管理和控制代码的变更,本专题为大家提供git 撤销提交的commit相关的各种文章内容,供大家免费下载体验。

2023.07.24

914

5

git提交错误怎么撤回
git提交错误怎么撤回

git提交错误撤回的方法:git reset head^:撤回最后一次提交,恢复到提交前状态。git revert head:创建新提交,内容与之前提交相反。git reset :使用提交的 sha-1 哈希撤回指定提交。交互式舞台区:标记要撤回的特定更改,然后提交,排除已撤回更改。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

3397

7

git怎么对比两个版本的文件内容
git怎么对比两个版本的文件内容

要对比两个版本的 git 文件,请使用 git diff 命令:git diff 比较工作树和暂存区之间的差异。git diff 比较两个提交或标签之间的差异。git diff 输出显示差异块,其中 + 表示添加的行,- 表示删除的行, 表示修改的行。可使用 gitkraken、meld、beyond compare 等可视化工具更直观地查看差异。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.09

3061

6

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.07.26

3039

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
vscode手册
vscode手册

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 7.9万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.8万人学习