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

仅使用Git工具,如何列出曾存在于某分支但现已不在该分支上的提交?

列出曾属于某分支但当前已不在该分支的提交

要找出曾经属于某个分支、但现在已经不在该分支上的提交,我们可以利用Git的**引用日志(reflog)**结合comm工具来实现——reflog会记录分支的所有历史变动(包括被重置或删除的提交),而comm可以帮我们对比两个提交列表的差异。

可用命令

直接运行这条命令即可:

comm -23 <(git reflog @{0} --pretty='%h' | sort -u) <(git log @{0} --pretty='%h' | sort -u)

命令拆解

  • git reflog @{0} --pretty='%h':获取当前分支的所有引用日志记录,仅输出提交的短哈希值
  • git log @{0} --pretty='%h':获取当前分支现有提交的短哈希值
  • sort -u:对两个列表去重并排序,确保comm能正确进行对比
  • comm -23:只保留第一个列表有、但第二个列表没有的内容——也就是曾经出现在分支上、现在已被移除的提交哈希

测试步骤

你可以通过以下步骤验证这个命令的效果:

  • 在目标分支上创建若干提交(比如多次执行git commit -m "test commit x")
  • 执行硬重置,将分支恢复到更早的状态:git reset --hard <初始提交哈希或分支起点>
  • 此时运行上面的comm命令,就能看到那些被重置掉、曾属于该分支的提交哈希了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 13:37:28