标签: git-tag

git ls-remote --tags:如何获取日期信息?

我用来git ls-remote --tags <url>从存储库获取标签。但是,它不提供任何日期信息。所以我想知道是否有任何方法可以获取带有日期信息的标签,而无需克隆整个存储库。我已经检查了 git ls-remote文档,但找不到任何有用的信息。
我尝试过git ls-remote --tags https://github.com/shopify/sarama,我得到了:

2ed98903c79815c54f80ab06167a74755e74348c        refs/tags/v1.0.0
3b6fa677e9395c3d7151999974d1b5b36f6ac091        refs/tags/v1.1.0
9bb4a68d57ff6f623363aa172f0a8297aa289ba7        refs/tags/v1.10.0
bd61cae2be85fa6ff40eb23dcdd24567967ac2ae        refs/tags/v1.10.1
0fb560e5f7fbcaee2f75e3c34174320709f69944        refs/tags/v1.11.0
c01858abb625b73a3af51d0798e4ad42c8147093        refs/tags/v1.12.0
bbdbe644099b7fdc8327d5cc69c030945188b2e9        refs/tags/v1.13.0
240fd146ce68bcafb034cc5dc977229ffbafa8ea        refs/tags/v1.14.0
3b1b38866a79f06deddf0487d5c27ba0697ccd65        refs/tags/v1.15.0
f7be6aa2bc7b2e38edf816b08b582782194a1c02        refs/tags/v1.16.0
35324cf48e33d8260e1c7c18854465a904ade249        refs/tags/v1.17.0
a6144ae922fd99dd0ea5046c8137acfb7fab0914        refs/tags/v1.18.0
ec843464b50d4c8b56403ec9d589cf41ea30e722        refs/tags/v1.19.0
fcf765a8b80c7b3a5ba1cb3bb9036261502b1ee8        refs/tags/v1.2.0
...

Run Code Online (Sandbox Code Playgroud)

显然,它们不是按日期排序的。任何人都可以解决这个问题吗?

根据下面 Vonc 的回答,我找到了一种获取按日期排序的标签信息的方法。首先,使用GraphQL Explorer,然后输入以下脚本:

query{
      repository(name: "snappy", owner: "golang") {
        refs(refPrefix: "refs/tags/", orderBy: {field: TAG_COMMIT_DATE, direction: DESC}, last: 100) {
          nodes {
            name
            target {
              __typename
              ... on Tag {
                oid
                name …
Run Code Online (Sandbox Code Playgroud)

git git-tag git-ls-remote

4
推荐指数
1
解决办法
2148
查看次数

语义释放:致命:标签“vX.YZ”已存在

尝试设置semantic-release/gitlab,我在我的GitLab日志中得到了这个,

Error: Command failed with exit code 128: git tag v1.0.0 2c30602010d7d9f26cc0880b988ff9de6405daa5
fatal: tag 'v1.0.0' already exists
    at makeError (/builds/myProject/angular-validators/node_modules/semantic-release/node_modules/execa/lib/error.js:60:11)
    at handlePromise (/builds/myProject/angular-validators/node_modules/semantic-release/node_modules/execa/index.js:118:26)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async tag (/builds/myProject/angular-validators/node_modules/semantic-release/lib/git.js:224:3)
    at async run (/builds/myProject/angular-validators/node_modules/semantic-release/index.js:191:5)
    at async module.exports (/builds/myProject/angular-validators/node_modules/semantic-release/index.js:260:22)
    at async module.exports (/builds/myProject/angular-validators/node_modules/semantic-release/cli.js:55:5) {
  shortMessage: 'Command failed with exit code 128: git tag v1.0.0 2c30602010d7d9f26cc0880b988ff9de6405daa5',
  command: 'git tag v1.0.0 2c30602010d7d9f26cc0880b988ff9de6405daa5',
Run Code Online (Sandbox Code Playgroud)

但是当我在 GitLab 上查看我的项目时,

https://gitlab/myGroup/myProject/-/tags
Run Code Online (Sandbox Code Playgroud)

它没有显示任何标签。当我查看管道的输出时,我看到

Getting source from Git repository
Fetching changes with git depth set to 50...
Reinitialized …
Run Code Online (Sandbox Code Playgroud)

git-tag gitlab gitlab-ci semantic-release

4
推荐指数
1
解决办法
3567
查看次数

Git:将标签转换为远程仓库中的分支

我有一个名为latest的标签,我希望它成为一个分支.与相反.我也需要将它从远程仓库中删除.

背景:对于许多golang软件包来说,这是一个问题,goinstall会查找发布标记或分支,这与该语言的最新官方版本相对应.当他们应该使用git 分支时,很多人错误地使用git 标签,类似于其他VCS .

git git-tag git-branch

3
推荐指数
1
解决办法
3189
查看次数

Git标记问题

即使在阅读文档后,我对git标记感到有点困惑.

说我正在改变我的develop分支.

  1. 我应该在进行更改之前创建标记,还是应该在进行更改后添加标记?哪个工作流程更好?

  2. 最初我被要求使用git push --tags,但在运行后git tag我显示了5个标签的列表(release-1,...,release-5),当我尝试运行时,git tag -v release-5我被提示有以下错误,同样适用于其他版本.有任何想法吗?

    error: 575bbe56b0c021c51e2b819763c1ff15cc5d2186: cannot verify a non-tag object of type commit.
    error: could not verify the tag 'release-5'
    
    Run Code Online (Sandbox Code Playgroud)
  3. 如果我曾经git pushDevelop分支中推送标签,然后合并到Master分支,我还需要做另一轮git push --tags

  4. 标签与分支有何不同?哪个更好?

git github git-tag

3
推荐指数
1
解决办法
1467
查看次数

有没有办法锁定GIT标签?

我希望能够锁定GIT标记,以便无法移动或删除它以进行产品发布控制.我认为我可以使用基于文档的轻量级标记执行此操作,但通过实验发现轻量级标记也可以移动.

git git-tag

3
推荐指数
1
解决办法
1879
查看次数

最新标签和上一个标签之间的 Git 差异

我希望做一个差异就像这一个

唯一的区别是我不想“手动”通知标签名称,我希望它们由 git 命令检索。

我知道这会git describe --tags返回我的最新标签。但是上一个呢?如何获得?

基本上我想要的是:

$ git diff $(git_command_to_get_previous_tag) $(git describe --tags)
Run Code Online (Sandbox Code Playgroud)

我不想要的:

$ git diff 1.0 2.0
Run Code Online (Sandbox Code Playgroud)

git git-diff git-tag

3
推荐指数
1
解决办法
2401
查看次数

如何永久删除 Github 标签?

我知道我可以去 github.com,选择我的标签,然后点击删除,但这只会删除标签信息,而不是实际的标签。那么如何永久删除呢?!

git github git-tag

3
推荐指数
1
解决办法
1683
查看次数

检查 git tag 是某个父级还是子级

有没有办法找出标签是孩子还是父母(不是直接孩子或父母)?

想象一下以下 git 历史:

a467066 - (tag: child-2, master) feature 4
2028351 - (tag: child-1) feature 3
a7a6364 - (HEAD) feature 2
3772445 - (tag: parent-1) feature 1
5a01bfa - (tag: parent-2) initial commit
Run Code Online (Sandbox Code Playgroud)

HEAD在中间变更集(“功能 2”),我想知道标签是否是当前变更集的任何子项。因此,对于child-1child-2我想true,检查标签parent-1parent-2或任何not-existing会返回false

git git-tag

3
推荐指数
1
解决办法
823
查看次数

当我使用Git GUI结帐时,为什么我的标签没有列出?

我有一个包含三个注释标签本地的Git仓库:v0.1.0,v0.1.1,和v0.1.2.

当我使用gitk(Repository→Visualize master的历史记录)查看项目的历史记录时,我可以看到每个标记分配给正确的提交.

gitk的项目历史

但是,当我尝试在Git GUI(分支→结帐...→标签)中签出我的标签时,标签v0.1.1不会出现.

Git GUI标签列表

当我去检查gitk中的每个标签时,我注意到标签的细节略有不同.详细信息v0.1.0并将v0.1.2其列为type commit,而标记v0.1.1列为type tag.

标签v0.1.1的详细信息

值得注意的是,我在这个标签上重写了历史.为了修复我的标签描述中的拼写错误,我使用了编辑标签消息git tag <tag name> <tag name> -f -m "<new message>".

v0.1.1在使用Git GUI结账时,为什么我看不到我的标签?它为什么显示为type tag

git git-gui git-tag

3
推荐指数
1
解决办法
731
查看次数

Jenkins groovy - 如何从最新提交中检索标签?

要从 获取最新提交branchName,我们运行以下代码:

treeMapData = git(branch: branchName, credentialsId: credential, url: "${gitLabServer}/${projectName}/${repo}.git")
Run Code Online (Sandbox Code Playgroud)

根据我们的工作流程,确保每次提交有一个标签

我们想要构建代码,只有当提交被标记时。


如何检索最新提交的标签名称?

git groovy git-tag jenkins-groovy jenkins-pipeline

3
推荐指数
1
解决办法
7383
查看次数