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

如何在未完成的Git合并过程中获取父提交哈希值?

刚好碰到过类似的需求!当你处于未完成的Git合并状态(不管有没有冲突、还没提交任何内容),要提取当前合并涉及的所有父提交哈希,有几个直接且可靠的方法,我给你拆解一下:

方法1:用Git的特殊引用快速提取

Git在合并过程中会维护几个特殊的引用,直接用git rev-parse就能拿到你要的哈希:

  • 要一次性获取所有父提交哈希,执行:

    git rev-parse HEAD^@
    

    这个命令会输出当前HEAD的所有父提交——在合并场景下,就是你当前分支合并前的最后提交,以及你正在合并进来的分支的顶端提交。

  • 如果需要分别获取两个父提交,可以单独指定序号:

    # 合并前当前分支的最后提交(等同于ORIG_HEAD)
    git rev-parse HEAD^1
    
    # 要合并进来的分支的顶端提交(等同于MERGE_HEAD)
    git rev-parse HEAD^2
    

方法2:直接读取Git的临时文件

Git在启动合并操作后,会在本地仓库的.git目录下生成几个临时文件,里面直接存着对应的哈希值,适合脚本里直接读取(不用调用Git命令,效率更高):

# 获取合并前当前分支的提交哈希
cat .git/ORIG_HEAD

# 获取要合并进来的提交哈希
cat .git/MERGE_HEAD

脚本示例:把父哈希存入变量

如果要在自动化脚本里使用这些值,可以这样写:

# 方式一:用git rev-parse
merge_parent1=$(git rev-parse HEAD^1)
merge_parent2=$(git rev-parse HEAD^2)

# 方式二:读取.git目录下的文件
# merge_parent1=$(cat .git/ORIG_HEAD)
# merge_parent2=$(cat .git/MERGE_HEAD)

echo "当前合并涉及的两个父提交哈希:"
echo "1. 原分支提交:$merge_parent1"
echo "2. 待合并分支提交:$merge_parent2"

注意事项

这些方法仅在未完成的合并状态下有效——一旦你完成合并(git commit)或者中止合并(git merge --abort),MERGE_HEAD、ORIG_HEAD这些引用和临时文件就会被Git自动清理掉。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:52:07