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

GitLab CI:合并分支至main时获取main最后提交哈希及分支新增修改文件

获取MR分支相对于main分支的变更文件列表解决方案

方法1:直接对比分支与main的独有变更(推荐)

不需要手动找分叉点提交,直接用Git的三点对比语法,精准筛选当前分支相对于main分支的新增/修改文件:

  1. 先拉取main分支最新代码:
    git fetch origin main
    
  2. 执行diff命令获取变更文件列表:
    git diff --name-only origin/main...${CI_COMMIT_SHA}
    
    这里的三个点...表示对比当前分支从与main分叉后所有的独有变更,正好匹配你需要的仅该分支向main新增/修改的文件(比如示例中的3个test.c文件)。

方法2:手动获取分叉点提交哈希(即你要的first_commit)

如果坚持要用两点对比语法,可先通过merge-base命令找到当前分支与main的分叉点提交哈希,再执行diff:

  1. 获取分叉点提交哈希:
    FIRST_COMMIT=$(git merge-base origin/main ${CI_COMMIT_SHA})
    
  2. 用该哈希执行diff:
    git diff --name-only ${FIRST_COMMIT}..${CI_COMMIT_SHA}
    

关于之前方法无效的说明

  • git cherry -v origin/main仅显示当前分支未合并到main的提交信息,无法直接输出文件列表,且合并阶段这些提交状态已变化,因此无效。
  • CI预定义变量未定义问题,需确认你使用的CI平台(如GitLab、GitHub Actions)的变量规范,确保CI_COMMIT_SHA这类变量在当前流水线环境中可用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:57:15