问题标签 [git-describe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - git describe:莫名其妙的提交计数
考虑以下摘录git log --oneline --decorate --graph
:
(注意:标签 v0.8.4 来自分支“开发”的提交)
当我跑步时,我git describe
怎么会得到这个:
也就是说,自标签 v0.8.4 以来,git 计算了 16 次提交。我希望它会回来v0.8.4-1-g552485a
。
更具体地说(使用 --debug 选项时):
有趣的是,如果我切换到我的开发分支:
git describe
按预期返回:v0.8.4-1-g0992f78
背景:我正在使用 SmartGit 及其 Git-Flow 功能。
这是相关提交的图形视图(红色:master,蓝色:develop):
git - 为什么“git describe”在我干净的 git repo 副本上显示较旧的标签版本?
一些背景:
我目前有两个本地 git 存储库,它们指向同一个源/主项目。我有两个 git 存储库的原因是,我有一个干净的主副本,我可以在需要时使用,一个副本是我的沙箱,我可以在其中应用更改、提交等。这可能有点矫枉过正,但有一些优点对我个人来说,拥有一个重复的本地 git 副本。
一位同事最初为 1.0.2 创建了一个轻量级标记,但我们将其删除并重新标记为具有相同编号的注释版本。他们通过 git push 将更改提交到远程仓库。我拉下了两个本地 git 实例的最新更改。
我们的标签如下:
问题:
这是我无法弄清楚的问题。当我运行“ git describe
”时,我的沙盒存储库会显示最新的标签版本(release-1.0.2)。这是我所期望的。但是,当我执行“”时,我只从中提取的干净的 repo 副本显示较旧的标签(release-1.0.1)git describe
。我确认两者都指向原始主机。我做了更多的研究,发现了一个overstack 解决方案,它指向我运行“git cat-file -t”。这是我注意到的区别:
为什么我的干净副本存储库在运行“ git describe
”时显示较旧的标签版本,这与我的沙盒存储库不同?git describe --tags
如果我在干净的 repo 副本上运行“”,我可以确认我可以看到列出的 release-1.0.2 。
git - 我可以更改 git-describe 计数提交的方式吗?
我的问题与git describe: 中的莫名其妙的提交计数和提交计数计算有关,但与这两个问题都不完全相同。我一直在当前项目的功能分支上进行开发,并且一直在使用git describe
最近的标记和提交计数来获取功能分支的版本号,以生成我认为会单调增加的版本号。(例如,我的分支目前在 v1.1.0 之前有 96 次提交,所以我在v1.1.0-96-g1234567
向用户报告的版本中已经变成了“版本 1.1.0.96”。)
现在,master 分支最近被标记为 v1.2.0,我想将 1.2 版中所做的更改合并到我的功能分支中。所以我将 master 合并到我的特性分支中,我认为这git describe
会产生v1.2.0-1-g9876543
. 但相反,我得到了v1.2.0-97-g9876543
.
我理解为什么会发生这种情况:如 Git 手册中所述,git describe
正在计算由git log v1.2.0..9876543
产生的提交以产生提交计数(97,因为我的分支有 96 个提交加上一个合并提交)。但我真正想要的是使用结果,git log --ancestry-path v1.2.0..9876543
它只显示合并提交,因此会产生v1.2.0-1-g9876543
我期望的结果。
有什么办法让我改变git describe
使用git log --ancestry-path v1.2.0..9876543
而不是的行为git log v1.2.0..9876543
?
而且,更重要的是,以目前的方式这样做有什么好处git describe
?如果我编写自己的工具来生成我一直期望的版本编号方案,这样做会失去什么?
顺便提一句。这是 git 存储库历史的快照,因此您可以直观地看到我刚刚描述的内容。feature/cmdline
分支是我正在处理的分支。(这个历史视图来自 Windows 上的Git 扩展工具,以防有人想知道。)
git - git describe 仅显示最新标签和其他提交
git describe是否有任何语法来仅显示最新标签和其他提交?
这样你得到
4.0.7
4.0.7
4.0.7-12
因为自标记以来有 12 次提交而被标记为提交4.0.7
git describe --tags
非常接近,4.0.7-12-g09181
但我还没有找到摆脱附加哈希的方法。
仍然显示4.0.7-12-g0918
仅显示4.0.7
。
git - `git describe` 中的哈希值指的是什么?
g3c31c73
似乎没有指向任何东西......文档说它是最近提交的缩写对象名称,但它不是 HEAD 提交哈希,并且find .git/objects -type f | grep g3c31c73
什么也没找到。
git - 有没有办法在 git 存储库上运行 'git describe' 而不必先执行 'git clone'?
我有一个脚本需要在远程 git 存储库的特定分支上快速收集“git describe”的输出,以便设置环境变量。
显而易见的方法是执行“git clone”来下载存储库,然后 cd 进入创建的 git 存储库文件夹并执行
...但我不太喜欢这种方法,因为它的开销太大;特别是,“git clone”命令每次运行都会下载数百兆的 git 存储库数据,只需要运行git describe
一次命令;之后下载的数据将不会被使用。
我的问题是,有没有办法在远程存储库上运行“git describe”?与此等价的东西,当然不起作用,因为我只是编造的:
git - Git/Bitbucket 管道 - 是什么导致标签根据我推送到的分支而出现不同?
我试图理解为什么在运行我的 bitbucket-pipelines.yml 文件时会得到两个相对于 git 标签的不同结果。目前我的项目的标签从1.0.0 - 1.0.25
. .yml 文件看起来像这样......
当我推送到 master 时,附加到下载工件的标签是正确的(1.0.25)。但是,当我推到 时diff-test
,回显的标签是1.0.14
和1.0.15
。
在 git 文档中describe
,它表示--tags: Instead of using only the annotated tags, use any tag found in refs/tags namespace. This option enables matching a lightweight (non-annotated) tag.
.
我的问题是 - 是什么导致标签根据我推送到的分支而不同?
android - 如何在 React Native 应用程序中显示 git-describe?
我通常喜欢在我正在开发的任何网站、应用程序等中自动烘焙结果,git describe --always --dirty
以便我可以轻松地跟踪行为。现在,我想不出办法在 React Native 应用程序中实现这一点。
我正在使用 Android,但我肯定正在寻找适用于 Android 和 iOS 的解决方案。
git - 自上次标记命令以来 git 提交的 JGit 等效项
给定这个 git 命令git log ``git describe --tags --abbrev=0``..HEAD --oneline
我很想在 JGit 中有等价物。我找到了类似的方法,git.log().addRange()
但无法弄清楚它期望什么样的值,或者我可以git describe
在 API 中的哪个位置进行调用。我尝试过git.describe()
,但是对于本机 git CLI API,链接方法对我没有任何意义。
git - git 描述一个匹配 glob 模式的标签
我有几个按时间顺序排列的具有以下模式的标签:
因此在这种情况下,我需要获取与模式number.number.number.number匹配的最新标签。0.0.3.154
git 命令git descrive --match=<pattern>
将找到与该模式匹配的最新标签。但是因为这里是一个glob(见这里)而不是一个正则表达式。
你能告诉我正确的 glob 模式来匹配上面的吗?