git - 如何在 git 提交之前获取最后一个版本
问题描述
我正在努力获取带有提交 ID 的最后一个标签。git describe --abbrev=0
但是,在尝试在 Linux 内核存储库中使用时,我没有看到预期的结果。例如,当我尝试检查之前的最后一个标签c0a333d842ef67ac04adc72ff79dc1ccc3dca4ed
时,输出为v5.3-rc1
,但似乎v5.4-rc6
是正确答案。有没有更好的方法来做到这一点?
$ git describe --abbrev=0 c0a333d842ef67ac
v5.3-rc1
提交: https ://github.com/torvalds/linux/commit/c0a333d842ef67ac04adc72ff79dc1ccc3dca4ed
v5.4-rc6
和之间的差异v5.4-rc7
(见):sound/soc/sof/debug.c
Files changed
解决方案
如果您的意图是针对“包含此特定提交的第一个版本”,您应该查看:
git tag --contains c0a333d842ef67ac
并选择您在那里看到的最低版本。
这是一个更完整的版本,使用选项仅列出按版本名称排序的版本标签:
# --list "v*" : only tags starting with 'v'
# --sort="v:refname" : sort tags as version numbers (not as plain strings)
# -c versionsort.suffix=-rc : add config option 'versionsort.suffix = -rc'
# so that release candidates are sorted before final versions
$ git -c versionsort.suffix=-rc tag --list "v*" --sort="v:refname" --contains c0a333d842ef67ac
v5.4-rc7
v5.4-rc8
v5.4
v5.5-rc1
v5.5-rc2
v5.5-rc3
...
git describe c0a333d842ef67ac
反过来工作:从提交开始c0a33...
,在它的一个祖先上看到的最后一个标签是什么?
它将为您提供编写修复程序的版本。
从您的评论中:
您正在寻找不包含该补丁的最新版本。
您可以这样做:
- 找到包含该补丁的第一个版本(
v5.4-rc7
,如上) - 采用以前的版本:在该提交
git describe
的父级上运行
$ git describe --abbrev=0 v5.4-rc7^
v5.4-rc6
推荐阅读
- azure - az aks 节点池删除
- c# - 当游戏对象移动到特定位置时触发
- node.js - 如何在使用 Chrome DevTools 调试 Node.js 时快速进入 require() 调用
- intellij-idea - IntelliJ 使缓存无效,但本地历史记录除外
- c# - 递归中使用的前缀减量与减法
- postgresql - 基于postgres的气流网络服务器错误
- linux - 如何在 Linux 上捕获全屏运行的 3D 应用程序?
- c# - OnAppearing Xamarin.Forms 中的 PopModalAsync
- python - 通过使用用户信息和管理员信息从 pythonda 数据库连接登录?
- python - 使用转换计算数据框中的特定值和聚合结果