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

Git获取dev分支推送后变更文件,排除合并master的变更

解决方法

要获取dev分支自上次推送到origin/dev后,仅属于dev分支自身的变更文件(排除从origin/master合并带来的内容),可以使用以下Git命令:

git diff --name-status origin/dev...dev --first-parent

命令解析

  • origin/dev...dev:该语法用于对比仅在dev分支上存在、而origin/dev没有的提交变更,排除两边共有的提交历史。
  • --first-parent:强制Git只追踪dev分支的主提交路径(即你直接在dev上完成的提交),跳过合并origin/master时引入的所有外部变更。
  • --name-status:输出每个变更文件的状态(如A代表新增、M代表修改)和文件名,完全匹配你需要的文件列表需求。

对应示例场景验证

按照你给出的步骤执行后:

  1. origin/dev为推送后的初始状态
  2. 在dev上提交local_1、合并origin/master(引入external_1)、提交local_2
  3. 执行上述命令后,只会输出local_1和local_2的状态与文件名,external_1会被完全排除。

为什么之前的git log方法有局限

你之前使用的git log origin/dev...dev --no-merges --first-parent --name-status会列出所有符合条件的提交中的文件,即使某个文件被修改后又改回原始状态,也会在日志中多次出现。而git diff是直接对比origin/dev和当前dev分支(仅主路径)的最终状态差异,只会显示真正有变更的文件(若文件被改回则不会出现在结果中),更贴合你获取“最终变更文件列表”的需求。

内容的提问来源于stack exchange,提问作者Disimasar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:33:32