|
|
1
8
TL;博士使用新的所需数据重新创建标记。但如果别人以前有,他们可能不会接受你的新的。或者他们可以!这取决于 实际上,你 不能 ,而你不能(以及你能做什么)这一事实在剩下的答案中起着重要的作用。 所有Git对象都有一个hash ID作为它们的“真名”。哈希是通过计算对象内容的加密校验和形成的。这意味着您永远不能更改任何Git对象。 1个 可以 do是构造 新的 对象,然后说服所有拥有旧对象的人停止使用它,而使用新对象。
这就是
对于 小费承诺 (见 the definition of head in the gitglossary 头 )对新的承诺,忘记原来我们刚刚更换的。它 看起来像 如何应用于标记Git有两种标记,一种是 lightweight tag 带注释的标记 tag object 因此,要“更改”标记对象,我们必须执行与“更改”提交对象相同的操作:将其复制到 新的 标记对象。
没有内置命令来执行此操作,但是很容易从
所以我们可以把这个标签复制到另一个
其中
标签可以是PGP签名的上面的标签接着说:
然后在里面有一个PGP签名。此签名包含除签名本身之外的所有数据。如果复制并修改此标记,则应完全放弃原始签名(它将无效,并且将无法通过任何应用的测试);是否可以并且应该用新签名替换它,如果可以,则由谁来决定。 标记不应更改其目标对象
现有的轻量级标记
这是我们到目前为止一直在查看的数据。 这个 tag对象将有一些其他的、不同的hash ID 没有其他人 保证 你可以确定这个标签是 正确的 标记,并且它指向的提交对象是原始提交,而不是某个特洛伊木马。如果你 改变 一个现有的标签,你颠覆了这个意图。此外,一些知道前一个标签值的人会拒绝接受新的值:您不会 使它们更新现有标记。只要你这么做 之前 其他人都有标签,但是,他们永远不会知道,你会没事的。 或者,您不能更改Git对象的内容,除非您可以 break the hash . 另见 How does the newly found sha1 collision affect git? |
|
|
2
4
|
|
Harry · 如何在编译时获取克隆的git仓库的标签 1 年前 |
|
Ooker · 如何从blob中删除秘密? 1 年前 |
|
|
hasdrubal · git日志图智能分支过滤器 1 年前 |
|
|
J. Doe · 为什么git中没有跟踪git文件? 1 年前 |