【Git】关于删除git标签和带有^{ }的标签

我想刪除git標籤➡︎有兩個相同的標籤➡︎其中一個帶有^{}符號➡︎該刪除哪個呢?

尽管在发布时打了版本标签,但之后可能会发现需要进行轻微更改,因此也可以考虑删除标签。

当我正想要在这种情况下删除标签时,却发现有两个相同的标签,让我感到困惑,所以我记下来了。

删除标签

可以按照以下顺序删除标签。

删除本地标记

    1. 使用git tag命令查看标签列表

使用带有-d选项的git tag命令来指定并删除标签

## ローカルのタグ一覧を確認
% git tag
android_1.0.0
android_1.0.1
android_1.1.0
android_1.1.1
android_1.1.2
android_1.10.0

## タグの削除
% git tag -d android_1.10.0
Deleted tag 'android_1.10.0' (was 752badb)

删除远程标签

    1. 使用git ls-remote –tags命令来查看远程标签列表。

使用git push命令加上–delete选项,指定标签并删除。

— 删除选项可以使用冒号来进行省略。

## リモートのタグ一覧を確認
% git ls-remote --tags
From git@github.com:hogehoge/sample_repository.git
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.0.0
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.0.1
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.1.0
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.1.1
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.1.2
752badb1ca34530cf1f0fc059b765dff0cb74bc9        refs/tags/android_1.10.0

## タグの削除
% git push origin --delete android_1.10.0
To https://github.com/hogehoge/sample_repository.git
 - [deleted]         android_1.10.0

% git push origin :android_1.10.0
To https://github.com/hogehoge/sample_repository.git
 - [deleted]         android_1.10.0

在标签列表中有两个同名的标签,其中一个带有^{}。

当执行”git ls-remote –tags”时,如标题所示,有两个同名的标签,其中一个标签附加了^{}。

那么应该删除哪一个呢…

% git ls-remote --tags
From git@github.com:hogehoge/sample_repository.git
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.0.0
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.0.1
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.1.0
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.1.1
24f380f0c7533b8935e93af57a8bd4502c4cdac9        refs/tags/android_1.1.2
752badb1ca34530cf1f0fc059b765dff0cb74bc9        refs/tags/android_1.2.0    # <-
df6db13cd08027e8680420d4818d42edd4c0db14        refs/tags/android_1.2.0^{} # <- 同じタグ番号が2つ

Tag付是什么?

据说标签有两种类型:
1. 轻量级标签:简化版本的标签,只保留与提交相关的引用。
2. 注释型标签:除了上述信息外,还保留了标记者(生成标签的人)等相关信息的git对象。

如果在生成标签时使用-a选项生成标签,则生成的标签将是上述的annotated标签。

带有^{}标记的标签在上述中被称为轻量级标签。

## lightweight
% git show df6db13cd08027e8680420d4818d42edd4c0db14 
commit df6db13cd08027e8680420d4818d42edd4c0db14 (tag: android_1.10.0)
Author: heyhey1028 <hogehoge@gmail.com>
Date:   Wed Jan 6 17:46:48 2021 +0900

    add: androidリリースバージョンを更新

diff --git a/sample/pubspec.yaml b/sample/pubspec.yaml
index 3076e7e12..b22b2ca66 100644
--- a/sample/pubspec.yaml
+++ b/sample/pubspec.yaml
@@ -2,7 +2,7 @@ name: sample
 description: A new Flutter project.

 publish_to: "none"
-version: 1.9.0+31
+version: 1.10.0+32

 environment:
   sdk: ">=2.10.0 <3.0.0"

## annotated
% git show 752badb1ca34530cf1f0fc059b765dff0cb74bc9   
tag android_1.10.0
Tagger: heyhey1028 <hogehoge@gmail.com>
Date:   Wed Jan 13 10:44:58 2021 +0900

Customer 1.10.0+32

commit df6db13cd08027e8680420d4818d42edd4c0db14 (tag: android_1.10.0)
Author: heyhey1028 <hogehoge@gmail.com>
Date:   Wed Jan 6 17:46:48 2021 +0900

    add: androidリリースバージョンを更新

diff --git a/sample/pubspec.yaml b/sample/pubspec.yaml
index 3076e7e12..b22b2ca66 100644
--- a/sample/pubspec.yaml
+++ b/sample/pubspec.yaml
@@ -2,7 +2,7 @@ name: sample
 description: A new Flutter project.

 publish_to: "none"
-version: 1.9.0+31
+version: 1.10.0+32

 environment:
   sdk: ">=2.10.0 <3.0.0"

我应该删除哪个?

如果删除了注释标签,那么两个都会被删除。

标注(annotated)标签也保存了对轻量级(lightweight)标签的引用。因此,如果存在轻量级标签,则可以同时删除对应的标注标签和保存对轻量级标签的引用的标注标签。

% git push origin --delete android_1.10.0
To https://github.com/hogehoge/sample_repository.git
 - [deleted]         android_1.10.0

希望我的分享对您有所帮助!

请在中国本土造物的基础上重新表达以下内容,只需提供一种选择:

– The novel I read was a beautiful and captivating story.

参考答案:
我所阅读的小说是一部美丽而引人入胜的故事。

广告
将在 10 秒后关闭
bannerAds