You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取与上游分支的变更文件列表并忽略合并提交?

解决Git合并后获取本地分支独有变更文件的方法

当你把master合并到本地featureA分支后,用git diff --name-only origin/featureA -- .会把合并提交里的文件也算进来,这时候可以用以下两种方式只获取本地分支自己的变更文件:

方法一:使用Git三点diff语法

直接执行这个命令:

git diff --name-only origin/featureA...featureA

这个命令的本质是对比本地featureA分支和本地featureA与远程origin/featureA的共同祖先之间的差异,自动排除了合并进来的master分支内容,只保留你在featureA上自己修改的文件。

对比两种语法的区别:

  • 两点语法origin/featureA..featureA:会列出远程分支到本地分支的所有变更(包括合并提交带来的master文件)
  • 三点语法origin/featureA...featureA:只列出本地分支相对于共同祖先的独有变更,完美过滤合并内容

方法二:手动筛选非合并提交

如果你需要更精准地排除所有合并提交,可以先找出本地分支相对于远程的非合并提交,再diff这些提交的范围:

# 获取本地相对于远程的最后一个非合并提交
local_commit=$(git rev-list --no-merges origin/featureA..featureA | tail -1)
# 对比该提交与远程分支的差异
git diff --name-only origin/featureA $local_commit

不过这种方式比三点语法繁琐,一般推荐用三点语法更高效。

内容的提问来源于stack exchange,提问作者OLIVER.KOO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 09:12:33