查看两个分支差异的方法

查看两个分支差异的方法

技术背景

在使用Git进行版本控制时,经常需要查看不同分支之间的差异,以了解开发进度、排查问题或进行代码审查等。通过比较分支差异,可以清晰地看到哪些文件被修改、添加或删除。

实现步骤

使用git diff命令

git diff命令是比较两个分支差异的常用工具。其基本语法如下:

1
git diff [options] <commit>..<commit> [--] [<path>…​]

其中,<commit>可以是分支名、提交哈希值或简写符号引用。

示例

  • 比较两个提交哈希值对应的差异:
1
git diff abc123..def567
  • 比较当前分支(HEAD)与远程master分支的差异:
1
git diff HEAD..origin/master
  • 若想查看自分支从共同祖先开始以来发生的更改,可使用三个点:
1
git diff <commit>...<commit>
  • 若只检查哪些文件有差异,而不关心内容差异,可使用--name-only选项:
1
git diff --name-only <commit>..<commit>
  • 两点语法中,点是可选的,以下命令同义:
1
git diff commit1 commit2
  • 切换到一个分支(如main),然后与另一个分支(如branch2)进行比较:
1
2
git checkout main
git diff branch2

常用选项

  • 添加--name-only只显示文件名。
  • 在末尾添加-- folderOrFileName查看特定文件或文件夹的更改。
  • 比较本地分支与远程分支时,先运行git fetch --all获取所有远程分支,再运行:
1
git diff --name-only [branchName]..origin/[branchName]

例如:

1
git diff --name-only develop..origin/develop

使用git log命令

使用--left-right参数和两个要比较的分支:

1
git log --left-right branch1...branch2

其他方法

图形化查看提交差异

1
git log --oneline --graph --decorate --abbrev-commit b1..b2

创建新分支比较

1
2
3
4
5
git checkout branch_1
git checkout -b compare-branch
git merge --no-commit --squash branch_2
git status
git diff

以树状形式查看差异

1
git difftool --dir-diff branch..otherBranch

比较远程分支与本地工作区

1
git difftool --dir-diff origin/branch .

不同平台的操作

Azure DevOps

  • 进入Repos / Branches
  • 在右侧,点击分支旁边的子菜单。
  • 选择要比较的分支。

GitHub

GitHub默认使用三点比较。可通过修改URL中的点的数量在两点和三点比较之间切换:

  • 三点比较:https://github.com/yourAcct/yourRepo/compare/develop...main
  • 两点比较:https://github.com/yourAcct/yourRepo/compare/develop..main

Eclipse(J2EE版本)

  • 打开Window -> Show view -> Git Repository
  • 选择两个本地Git分支,右键点击并选择Compare with each other in Tree menu
  • 打开Git Tree Compare视图查看文件差异。

在特性分支上合并目标分支后比较

1
2
3
4
git fetch
git checkout feature
git merge origin/master
git diff origin/master

核心代码

1
2
3
4
5
6
7
8
# 比较两个分支的所有差异
git diff branch1 branch2

# 比较两个分支中特定文件的差异
git diff branch1 branch2 path/to/file

# 查看提交差异
git log --left-right branch1...branch2

最佳实践

  • 在进行比较之前,确保本地仓库是最新的,可使用git fetch获取最新的远程分支信息。
  • 根据具体需求选择合适的比较方式,如只关心文件列表可使用--name-only选项,想查看详细内容差异则直接使用git diff
  • 对于复杂的比较场景,可结合多种方法,如先使用git log查看提交差异,再使用git diff查看具体文件内容差异。

常见问题

分支显示不同步但实际同步

GitHub默认使用三点比较,可能会导致显示的差异与预期不符。可通过修改URL中的点的数量切换到两点比较来验证分支是否真正同步。

旧方法不再适用

由于版本控制工具的发展,一些旧的方法可能不再适用。如文中提到的部分方法因修订和分支分离而失效,应使用git diff origin/branch1 origin/branch2等更可靠的方法。


查看两个分支差异的方法
https://119291.xyz/posts/2025-05-09.methods-to-compare-two-git-branches/
作者
ww
发布于
2025年5月9日
许可协议