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

如何识别feature分支合并develop时的有效变更差异?

识别两次评审间的有效合并变更

要找出feature/foo在第一次评审后新增的、与合并相关的有效变更(排除develop分支本身的更新),可以通过以下Git命令实现:

前提准备

先确定第一次评审完成时feature/foo的最后提交哈希,记为REVIEWED_COMMIT。你可以通过git log feature/foo查看提交历史,或从PR/MR的历史记录、评论区找到这个节点,也可以给它打个标签方便后续使用:

git tag reviewed-1 <REVIEWED_COMMIT_HASH>

方法一:直接对比变更集(排除develop分支内容)

  1. 获取两次合并的基础节点:
    # 第一次评审时,feature/foo与develop的共同祖先
    BASE_OLD=$(git merge-base reviewed-1 develop)
    # 当前feature/foo与develop的共同祖先
    BASE_NEW=$(git merge-base feature/foo develop)
    
  2. 提取并对比有效变更:
    # 获取develop分支在两次合并基础间的所有变更文件
    DEVELOP_CHANGES=$(git diff --name-only $BASE_OLD $BASE_NEW)
    # 对比feature/foo从评审完成到当前的变更,排除develop分支的变更内容
    git diff reviewed-1 feature/foo -- $(git diff --name-only reviewed-1 feature/foo | grep -vFxf <(echo "$DEVELOP_CHANGES"))
    
    执行后输出的内容,就是两次评审之间feature/foo上新增的、不属于develop分支的有效变更。

方法二:通过临时分支Rebase对比

这种方式更直观,模拟第一次评审内容同步到当前develop后的状态,再与当前feature/foo对比:

  1. 创建临时分支并Rebase到当前develop:
    # 基于第一次评审的提交创建临时分支
    git checkout -b temp-reviewed reviewed-1
    # 将临时分支Rebase到当前develop,同步develop的最新更新
    git rebase develop
    
  2. 对比临时分支与当前feature/foo:
    git diff temp-reviewed feature/foo
    
    这里的差异就是feature/foo在第一次评审后新增的有效变更(Rebase会自动整合develop的更新,所以对比结果不会包含develop本身的内容)。
  3. 清理临时分支:
    git checkout feature/foo
    git branch -D temp-reviewed
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 00:33:22