【发布时间】:2015-01-06 03:24:21
【问题描述】:
我还是 git 的新手。当我对任何包执行 git clone ... 时,它主要从 master 分支下载。
我的理解是master分支应该同时包含开发和发布代码。
如果是这样,是否可以从下载的主分支中找到最新的(生产)发布版本?
【问题讨论】:
标签: git
我还是 git 的新手。当我对任何包执行 git clone ... 时,它主要从 master 分支下载。
我的理解是master分支应该同时包含开发和发布代码。
如果是这样,是否可以从下载的主分支中找到最新的(生产)发布版本?
【问题讨论】:
标签: git
如果每个版本都标有 annotated 标签,git describe 就是您所需要的(从手册页引用):
git-describe - 显示可从提交中访问的最新标签
如果您上次发布的版本是 2.6.9,git describe 将为您提供以下输出:
2.6.9-<NUMCOMMITS>-g<CURRENTREV>
如果您当前的分支直接指向2.6.9,NUMCOMMITS 和CURRENTREV 将不会被打印并且该命令只会产生2.6.9。
然而,如果你在2.6.9 之后做了一些提交(例如3),NUMCOMMITS 将是3 和CURRENTREV 将是最后提交哈希的7个字符(例如2597536):
2.6.9-3-g2597536
使用--tags 开关可以为未注释的标签实现同样的效果:
git describe --tags
【讨论】:
OP 指出 in the comments 的“发布版本”不是在 repo 中包含二进制文件(交付),而是获取用于生成交付的版本。
git tag 本身并不适合,因为顺序并不总是相关的。
但是,正如我在“How to sort git tags?”中解释的那样,这将给出正确的顺序(使用 git 2.0+)
git tag -l --sort=refname "v*"
# or
git tag -l --sort=version:refname "v*"
v17
v16
...
v9
...
v1
【讨论】: