git标签和时间

git标签和时间,git,commit,git-tag,Git,Commit,Git Tag,我的印象是,标记的行为类似于提交,因为如果我有一个基于旧提交的克隆,我不希望看到git标记输出中列出新标记 然而,这一假设显然是错误的。它破坏了我计划使用标签的方式。我使用的是简单的标签。随着时间的推移,其他类型的标记是否会有不同的工作方式?在正常情况下,git标记是固定的。如果您昨天引用它,今天引用它,它将指向同一个SHA/树/签出 但是,随着时间的推移和您更改存储库(本地或由于git fetch等原因),同一个SHA可能有更多的方法来描述(git descripe)相同的提交。多个标记可能指

我的印象是,标记的行为类似于提交,因为如果我有一个基于旧提交的克隆,我不希望看到git标记输出中列出新标记


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

在正常情况下,git标记是固定的。如果您昨天引用它,今天引用它,它将指向同一个SHA/树/签出

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


也许你可以描述一下你正在尝试做什么,人们可以看到是否有任何想法。

我不确定你的目标,但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克隆--无硬链接”。但这可能不是实现您目标的最佳解决方案。

要获得最有用的答案,请尽可能具体地说明您的目标。例如,描述使用标记时的工作流程。另外,解释什么是“简单标记”以及您期望它的行为。如果您的背景与其他vcs(如subversion)有关系,请说明。您是否希望标记成为历史记录的一部分,这样,如果您在历史记录的早期点查看回购,您将看不到标记?@jleedev谢谢您提供的信息。您甚至可以强制iso8601获取时间戳。然而,我对手册页的简要查看似乎没有显示一种不使用长脚本就可以获得标记目标的提交日期的简单方法。