-1

我的印象是一个标签就像一个提交,如果我有一个基于旧提交的克隆,我不希望在 git 标签输出中看到新标签。

然而,这个假设显然是错误的。它破坏了我计划使用标签的方式。我正在使用简单的标签。随着时间的推移,其他类型的标签的工作方式会有所不同吗?

4

2 回答 2

5

我不确定您的目标,但是 git 并不能轻松地按所指向的提交日期对标签进行排序。

经过一些研究和努力,我想出了这个:

git tag | xargs -I@ git log --format=format:"%ci %h @%n" -1 @ | sort

样本输出:

2008-10-30 08:51:04 -0700 221793e REL_1.0.0
2008-10-31 12:06:57 -0700 51a406c REL_1.0.1
2008-10-31 13:01:18 -0700 e1e9751 REL_1.0.2

稍加调整,这也可以与“git branch”一起处理指示当前分支的星号。

另一个可能有用的命令...在日志输出中包含引用名称(分支、标签等):

git log --decorate

您是否有一个工作流程或脚本依赖于旧克隆中不存在新标签的假设?如果您正在克隆本地存储库,您可以尝试“git clone --no-hardlinks”。但这可能不是您目标的最佳解决方案。

于 2011-06-21T17:59:29.147 回答
1

Agit tag一般情况下是固定的。如果您昨天引用它并今天引用它,它将指向相同的 SHA/tree/checkout。

但是,随着时间的推移和您更改存储库(本地或由于git-fetch等)相同的 SHA 可能有更多的方式来描述(git describe)相同的提交。多个标签可能指向同一个 SHA(如果没有提交直接指向 SHA,则可能是附近的提交),并且git describe返回的标签可能会改变。

也许您可以描述您正在尝试做的事情,人们可以看看是否有任何想法。

于 2011-06-21T17:45:45.637 回答