GitLab CI:合并分支至main时获取main最后提交哈希及分支新增修改文件
获取MR分支相对于main分支的变更文件列表解决方案
方法1:直接对比分支与main的独有变更(推荐)
不需要手动找分叉点提交,直接用Git的三点对比语法,精准筛选当前分支相对于main分支的新增/修改文件:
- 先拉取main分支最新代码:
git fetch origin main - 执行diff命令获取变更文件列表:
这里的三个点git diff --name-only origin/main...${CI_COMMIT_SHA}...表示对比当前分支从与main分叉后所有的独有变更,正好匹配你需要的仅该分支向main新增/修改的文件(比如示例中的3个test.c文件)。
方法2:手动获取分叉点提交哈希(即你要的first_commit)
如果坚持要用两点对比语法,可先通过merge-base命令找到当前分支与main的分叉点提交哈希,再执行diff:
- 获取分叉点提交哈希:
FIRST_COMMIT=$(git merge-base origin/main ${CI_COMMIT_SHA}) - 用该哈希执行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
相关产品推荐
相关产品推荐

