讲师中心 微信公众号
AI工具推荐 视频效率加速

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

胖宇吖_9359

胖宇吖_9359

发布时间:2026-03-24 13:44:31

|

589人浏览过

|

来源于php中文网

原创

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/"。

Cnb Cool Git
Cnb Cool Git

CNB 云原生构建平台的 Git 操作技能,支持代码克隆、提交、推送、分支管理、Merge Request 管理、流水线触发与结果读取。初次使用需收集用户的 Git 用户名和邮箱。

下载
  • --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。

热门AI工具

更多
二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

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

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

2227

2023.10.12

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

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

529

2023.09.22

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

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

1658

2024.03.01

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

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

5199

2023.07.05

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

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

1600

2023.07.06

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

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

914

2023.07.24

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

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

3397

2024.04.09

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

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

3061

2024.04.09

Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

120

2026.09.23

热门下载

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

精品课程

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

共0课时 | 0人学习

Git 教程
Git 教程

共21课时 | 7.9万人学习

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

共8课时 | 1.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn