问题标签 [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.

0 投票
1 回答
612 浏览

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):

在此处输入图像描述

0 投票
1 回答
3585 浏览

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 。

0 投票
0 回答
548 浏览

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 扩展工具,以防有人想知道。)

我的功能分支的简要快照

0 投票
2 回答
5040 浏览

git - git describe 仅显示最新标签和其他提交

git describe是否有任何语法来仅显示最新标签和其他提交?

这样你得到

4.0.74.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

0 投票
1 回答
2015 浏览

git - `git describe` 中的哈希值指的是什么?

g3c31c73似乎没有指向任何东西......文档说它是最近提交的缩写对象名称,但它不是 HEAD 提交哈希,并且find .git/objects -type f | grep g3c31c73什么也没找到。

0 投票
0 回答
74 浏览

git - 有没有办法在 git 存储库上运行 'git describe' 而不必先执行 'git clone'?

我有一个脚本需要在远程 git 存储库的特定分支上快速收集“git describe”的输出,以便设置环境变量。

显而易见的方法是执行“git clone”来下载存储库,然后 cd 进入创建的 git 存储库文件夹并执行

...但我不太喜欢这种方法,因为它的开销太大;特别是,“git clone”命令每次运行都会下载数百兆的 git 存储库数据,只需要运行git describe一次命令;之后下载的数据将不会被使用。

我的问题是,有没有办法在远程存储库上运行“git describe”?与此等价的东西,当然不起作用,因为我只是编造的:

0 投票
1 回答
666 浏览

git - Git/Bitbucket 管道 - 是什么导致标签根据我推送到的分支而出现不同?

我试图理解为什么在运行我的 bitbucket-pipelines.yml 文件时会得到两个相对于 git 标签的不同结果。目前我的项目的标签从1.0.0 - 1.0.25. .yml 文件看起来像这样......

当我推送到 master 时,附加到下载工件的标签是正确的(1.0.25)。但是,当我推到 时diff-test,回显的标签是1.0.141.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..

我的问题是 - 是什么导致标签根据我推送到的分支而不同?

0 投票
1 回答
105 浏览

android - 如何在 React Native 应用程序中显示 git-describe?

我通常喜欢在我正在开发的任何网站、应用程序等中自动烘焙结果,git describe --always --dirty以便我可以轻松地跟踪行为。现在,我想不出办法在 React Native 应用程序中实现这一点。

我正在使用 Android,但我肯定正在寻找适用于 Android 和 iOS 的解决方案。

0 投票
1 回答
838 浏览

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,链接方法对我没有任何意义。

0 投票
1 回答
1560 浏览

git - git 描述一个匹配 glob 模式的标签

我有几个按时间顺序排列的具有以下模式的标签:

因此在这种情况下,我需要获取与模式number.number.number.number匹配的最新标签。0.0.3.154git 命令git descrive --match=<pattern>将找到与该模式匹配的最新标签。但是因为这里是一个glob(见这里)而不是一个正则表达式

你能告诉我正确的 glob 模式来匹配上面的吗?