如何在 Bitbucket 中取消标记
How to untag in Bitbucket
虽然 Bitbucket 的 UI 允许标记 mercurial 存储库的给定提交,但我找不到删除标记的方法(基于 Web 或命令行),可以添加误操作(实际上没有确认提示添加)。当用于控制发布时,这种错误可能是一个主要问题。
Mercurial 对所有命令都有内置的帮助机制。在这种情况下,hg help tag
显示:
options:
-f --force force tag
让我们添加一个标签,然后移动它:
$ hg init foo
$ cd foo/
$ touch a
$ hg add a
$ hg commit -m 'add a'
$ hg tag 0.1.0
历史是什么?
$ hg log -G
@ changeset: 1:9352d8865ee5
| tag: tip
| summary: Added tag 0.1.0 for changeset a4cab63b7c86
|
o changeset: 0:a4cab63b7c86
tag: 0.1.0
summary: add a
啊,我们改变主意了。我们缺少一个文件。让我们添加它(等等
在 hg 历史记录中添加一些内容):
$ touch b
$ hg add b
$ hg commit -m 'add b'
我们想将 0.1.0
标签移至提示。让我们试试:
$ hg tag 0.1.0
abort: tag '0.1.0' already exists (use -f to force)
很清楚。我们再试一次:
hg tag --force 0.1.0
历史是什么?
hg log -G
@ changeset: 3:04b62f2a9b16
| tag: tip
| summary: Added tag 0.1.0 for changeset 3d8bb8a977e6
|
o changeset: 2:3d8bb8a977e6
| tag: 0.1.0
| summary: add b
|
o changeset: 1:9352d8865ee5
| summary: Added tag 0.1.0 for changeset a4cab63b7c86
|
o changeset: 0:a4cab63b7c86
summary: add a
正如我们所见,标签已移至新位置。
出于好奇,标签是如何存储的?在一个简单的文本文件中:
$ cat .hgtags
a4cab63b7c868638e51a45d93443b1a0eb56e1e4 0.1.0
a4cab63b7c868638e51a45d93443b1a0eb56e1e4 0.1.0
3d8bb8a977e6be693a30c30d7d7675d04623690f 0.1.0
如果.hgtags
文件有多个条目具有相同的标签,最后一个
赢了。合并分支时经常会看到这种情况。
留给reader:显然这些变化是局部的。你必须推动
bitbucket 使它们成为 public.
编辑
回答附加问题:有没有办法删除标签,或为同一提交重命名标签?
最安全的方法不是重命名标签,而是为同一提交添加新的标签名称(hg tag -r REV
)。换句话说:单个提交可以关联任意多个标签。
也可以删除标签,只需从 .hgtags
中删除相应的行即可。这很难做到正确,因为每个分支都有该文件的一个副本,并且它可能会作为合并的结果返回。
实际上,可以删除标签。这可以从提交的视图来完成:标签旁边有一个灰色的 X
。
标记的提交可以在提交页面上找到。这是标签的 top-most。
备注:
- 这回答了“如何在 Bitbucket 中取消标记”这个问题 - 我使用的是 git,而不是 mercurial。
- 我仍然添加了答案,因为此页面在搜索引擎结果中排名很高。
虽然 Bitbucket 的 UI 允许标记 mercurial 存储库的给定提交,但我找不到删除标记的方法(基于 Web 或命令行),可以添加误操作(实际上没有确认提示添加)。当用于控制发布时,这种错误可能是一个主要问题。
Mercurial 对所有命令都有内置的帮助机制。在这种情况下,hg help tag
显示:
options:
-f --force force tag
让我们添加一个标签,然后移动它:
$ hg init foo
$ cd foo/
$ touch a
$ hg add a
$ hg commit -m 'add a'
$ hg tag 0.1.0
历史是什么?
$ hg log -G
@ changeset: 1:9352d8865ee5
| tag: tip
| summary: Added tag 0.1.0 for changeset a4cab63b7c86
|
o changeset: 0:a4cab63b7c86
tag: 0.1.0
summary: add a
啊,我们改变主意了。我们缺少一个文件。让我们添加它(等等 在 hg 历史记录中添加一些内容):
$ touch b
$ hg add b
$ hg commit -m 'add b'
我们想将 0.1.0
标签移至提示。让我们试试:
$ hg tag 0.1.0
abort: tag '0.1.0' already exists (use -f to force)
很清楚。我们再试一次:
hg tag --force 0.1.0
历史是什么?
hg log -G
@ changeset: 3:04b62f2a9b16
| tag: tip
| summary: Added tag 0.1.0 for changeset 3d8bb8a977e6
|
o changeset: 2:3d8bb8a977e6
| tag: 0.1.0
| summary: add b
|
o changeset: 1:9352d8865ee5
| summary: Added tag 0.1.0 for changeset a4cab63b7c86
|
o changeset: 0:a4cab63b7c86
summary: add a
正如我们所见,标签已移至新位置。
出于好奇,标签是如何存储的?在一个简单的文本文件中:
$ cat .hgtags
a4cab63b7c868638e51a45d93443b1a0eb56e1e4 0.1.0
a4cab63b7c868638e51a45d93443b1a0eb56e1e4 0.1.0
3d8bb8a977e6be693a30c30d7d7675d04623690f 0.1.0
如果.hgtags
文件有多个条目具有相同的标签,最后一个
赢了。合并分支时经常会看到这种情况。
留给reader:显然这些变化是局部的。你必须推动 bitbucket 使它们成为 public.
编辑
回答附加问题:有没有办法删除标签,或为同一提交重命名标签?
最安全的方法不是重命名标签,而是为同一提交添加新的标签名称(hg tag -r REV
)。换句话说:单个提交可以关联任意多个标签。
也可以删除标签,只需从 .hgtags
中删除相应的行即可。这很难做到正确,因为每个分支都有该文件的一个副本,并且它可能会作为合并的结果返回。
实际上,可以删除标签。这可以从提交的视图来完成:标签旁边有一个灰色的 X
。
标记的提交可以在提交页面上找到。这是标签的 top-most。
备注:
- 这回答了“如何在 Bitbucket 中取消标记”这个问题 - 我使用的是 git,而不是 mercurial。
- 我仍然添加了答案,因为此页面在搜索引擎结果中排名很高。