如何获取基准分支两次版本分支切割间的Git提交记录?
获取两次版本分支切割间的Git提交列表
核心思路
由于无法确定上次切割的时间,我们可以通过Git分支的元数据找到最近创建的release/前缀分支,再定位它从master分支切割时的提交点,最后对比当前master的提交,就能精准获取两次切割间的所有提交。
具体操作命令
1. 找到最近创建的release分支
这条命令会列出所有release/前缀的分支,按创建时间倒序排列,取第一个结果就是上一次切割的分支:
git for-each-ref --sort=-creatordate refs/heads/release/ --format="%(refname:short)" | head -n 1
示例输出:release/1.0(对应你提到的release1)
2. 定位切割时的master提交点
通过merge-base命令找到该release分支与master的共同祖先(即切割时master的HEAD提交):
git merge-base master <上一步得到的release分支名>
示例:
git merge-base master release/1.0
输出结果为一个提交哈希,记为<切割点哈希>
3. 列出两次切割间的提交
用git log对比切割点到当前master的所有提交,--oneline参数让输出更简洁:
git log --oneline <切割点哈希>..master
一键整合命令
无需手动复制哈希或分支名,直接用这条命令完成所有操作:
git log --oneline $(git merge-base master $(git for-each-ref --sort=-creatordate refs/heads/release/ --format="%(refname:short)" | head -n 1))..master
补充说明
- 若这是第一次切割release分支(无历史release分支),该命令会列出
master从初始提交到当前的所有提交,符合预期。 - 输出的提交列表完全匹配两次切割间
master的新增提交,不受提交数量、切割时间的限制。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

