当您修改标记的提交时,Git中会发生什么?

当您修改标记的提交时,Git中会发生什么?,git,tags,commit,Git,Tags,Commit,我已经将一些源文件提交到我的git存储库,并将其标记为我的软件的新版本。但我看到了我刚才犯的一个错误,并使用“修正”功能提交了已更正的文件 现在,我看到标记没有被转移到新提交(使用“修正”特性进行的提交)。但我也能看到标签仍然存在 我想知道标签怎么了。这种行为是错误吗?标记是否链接到不再存在的提交 我知道我可以在新提交上强制创建相同的标记,但我相信应该有更好的方法(比如在提交上使用命令行参数“amend”)。这是设计的。Git将提交、标记、blob和树作为其内容的SHA-1散列进行跟踪。它们只是

我已经将一些源文件提交到我的git存储库,并将其标记为我的软件的新版本。但我看到了我刚才犯的一个错误,并使用“修正”功能提交了已更正的文件

现在,我看到标记没有被转移到新提交(使用“修正”特性进行的提交)。但我也能看到标签仍然存在

我想知道标签怎么了。这种行为是错误吗?标记是否链接到不再存在的提交


我知道我可以在新提交上强制创建相同的标记,但我相信应该有更好的方法(比如在提交上使用命令行参数“amend”)。

这是设计的。Git将提交、标记、blob和树作为其内容的SHA-1散列进行跟踪。它们只是指向对象的指针。标记指向的对象仍然存在。这是修改前提交的版本。只需删除标记并重新创建它。确保您让正在使用存储库的其他人知道您所做的事情,如果他们从该提交开始做任何事情


要了解git的工作原理,请在gitcasts.com上观看Scott Chacon的Rails会议,讨论git。另外,请在git:progit.org/book上阅读这本小书。

谢谢。我知道Git使用了SHA-1,但我认为修正功能只是删除了之前的提交,因此,标记不再指向任何东西。@Fififox,这是Git的优点之一,只要你在某个地方有一个引用,你就永远不会丢失任何东西;通常,您不希望在处理提交时移动它们。