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

如何在Git历史中查找使用git merge -s ours完成的合并提交?

找出所有使用 -s ours 的Git合并提交

嘿,这个坑我之前也踩过!别担心,咱们可以通过Git的提交差异分析来精准定位这些有问题的合并提交,完全符合你一开始的思路。

核心思路

当你用 -s ours 合并时,最终的合并提交内容完全继承自你当前的本地分支(第一个父提交),被合并的分支(第二个父提交)的所有更改都会被丢弃。所以我们只要找出所有和第一个父提交内容完全一致的合并提交,就能锁定目标。

具体命令实现

直接运行下面的脚本,它会自动遍历所有合并提交并筛选出可疑的提交:

git log --merges --pretty="%H" | while read commit_hash; do
  # 检查合并提交是否和第一个父提交完全无差异
  if git diff --quiet "$commit_hash^1" "$commit_hash"; then
    echo "⚠️  疑似使用 -s ours 的合并提交:$commit_hash"
    # 可选:显示该提交的详细信息,方便确认
    git log --oneline -1 "$commit_hash"
  fi
done

额外验证步骤

如果你想进一步确认某个提交确实是用了 -s ours,可以对比它和第二个父提交的差异:

git diff <合并提交哈希>^2 <合并提交哈希>

如果输出的内容是第二个父提交的所有更改都被“反向”应用了(相当于把被合并分支的修改全部撤销),那就能100%确定这是 -s ours 的合并。

后续恢复建议

找到这些提交后,你可以用 git cherry-pick <第二个父提交哈希> 把之前丢失的工作重新应用到当前分支;如果需要撤销这个错误的合并,记得用 git revert -m 1 <合并提交哈希>(-m 1 指定以第一个父提交为基准撤销)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:47:26