首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git注释标记是否可以修改?如果是这样的话,是怎么做的?

git注释标记是否可以修改?如果是这样的话,是怎么做的?
EN

Stack Overflow用户
提问于 2019-09-20 21:10:37
回答 1查看 104关注 0票数 0

修改git中的轻量级标记正在按预期工作。git tag -f <tagname> <commit-id>

但在带注释的标签上使用同样的标签似乎会引起麻烦-

代码语言:javascript
运行
复制
$ git cat-file -t tag2rag
tag

代码语言:javascript
运行
复制
$ git cat-file -p tag2rag
object a7b4b4823f0222b79376e4c16bdbba0f3d1f5d33
type commit
tag tag2rag
tagger samshers <email@gmail.com> 1568930032 +00:00

tag to rag

然后,

代码语言:javascript
运行
复制
$ git tag -f tag2rag 3096b
Updated tag 'tag2rag' (was 8931274)

然后,意外的

代码语言:javascript
运行
复制
$ git cat-file -t tag2rag
commit

代码语言:javascript
运行
复制
$ git cat-file -p tag2rag
tree b0053bf300da86e5aeabafb29d7dedcdbf713d51
parent 49c74fafd7c69e938052a4cba96ad62999438413
author samshers <email@gmail.com> 1568910804 +0000
committer samshers <email@gmail.com> 1568910804 +0000

wowfiles in

免责声明:嗯,我承认在发布后更改标记不是一个好做法,可能会导致更多的协作问题。相反,应该创建并发布一个新的标记。

这里的目的是了解git,以及如何在git中进行操作。

任何关于如何编辑带注释的标签的建议。

EN

回答 1

Stack Overflow用户

发布于 2019-09-20 21:21:45

简短的回答是否定的。

更长的答案是,它们与提交完全一样可修改:一点也不,但是如果您足够努力,您可以得到一个新的、不同的提交--在这种情况下是带注释的标记--并且您可以诱使人们认为您更改了某个现有的对象。

带注释的标记由一个轻量级标记组成--以refs/tags/-that开头的引用指向类型为tag的内部Git对象:

代码语言:javascript
运行
复制
$ git cat-file -t v2.4.0
tag

基础对象有一个散列ID:

代码语言:javascript
运行
复制
$ git rev-parse v2.4.0
67308bd628c6235dbc1bad60c9ad1f2d27d576cc

这个散列ID是对象(头+内容)的Git样式的校验和:

代码语言:javascript
运行
复制
$ git cat-file -p v2.4.0 | sed 's/@/ /'
object 3d4a3ffe64162b45ae7c991fc60623ecb4678cfd
type commit
tag v2.4.0
tagger Junio C Hamano <gitster pobox.com> 1430418320 -0700

Git 2.4
-----BEGIN PGP SIGNATURE-----
[snip]

您可以使用不同的内容(例如,使用git taggit mktag )创建一个新的标记对象,但是如果内容不同,哈希ID也会不同。然后,您可以使用git update-ref来使轻量级标记名指向新的标记对象。

这不会以任何方式修改现有对象。然而,天真的用户现在会不加批判地检查标记,没有注意到refs/tags/v2.4.0名称产生一个新的和不同的标记对象ID,读取新的和不同的标记对象,并认为标记已经改变。(如果标记对象中的标识符仍然具有v2.4.0名称,那么从某些角度来看,所有的东西都是同步的,而且标记可能真的发生了变化!)

尝试将这个新更新的标记发送到其他Git存储库可能成功或失败,这取决于它们替换现有标记名称空间引用的策略以及它们是否有前一个标记对的副本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58035227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档