【问题标题】:Git update tag without creating new branch?Git更新标签而不创建新分支?
【发布时间】:2021-10-05 22:35:42
【问题描述】:

我有一个标签 v1 设置为旧提交。此版本存在错误,我想更新它。

我跑了get checkout v1。我已经更新了代码来修复这个错误,然后 git-added 和 git-commited。

现在我想更新标签 v1 以引用这个新提交。

我试过git push -f origin v1。这不起作用。我收到以下回复:

Everything up-to-date

有没有办法做到这一点?最好,我想避免创建一个新分支,但如果我必须这样做,我怎样才能避免污染分支命名空间?之后我可以删除分支吗?

【问题讨论】:

  • 您不能“更新标签”,您必须删除现有标签并将相同的标签应用于新提交。
  • 我没有意识到您可以创建一个提交,然后新标签将引用该提交。我以为你必须先推到一个新的分支。所以我想我有一个解决方案
  • 可以移动标签。您不应该移动标签,因为克隆了您的存储库的其他人可能认为标签没有移动,并且可能会忽略您移动标签,或者主动和你吵架。这通常是一个坏主意。在特殊情况下,它不会产生积极的伤害甚至是有益的,就像有时可以切断你的手一样(例如,当坏疽开始时)。但要小心。

标签: git git-branch git-tag


【解决方案1】:

标记通常用于查看特定版本的文件,一旦标记文件就不会更改文件,例如版本 1.0,如果您想进行更改并在之后重新标记,

  1. 从您要更新的标签中创建一个新分支,例如分支 a。
  2. 在新分支 a 上创建您的提交。
  3. 当您准备好用分支 a 替换标签时,请删除您从中创建分支 a 的标签。
  4. 从分支 a 创建新标签
  5. 如果以后要删除分支 a,则删除分支 a。

【讨论】:

  • 这里关于分支a 的一切都是无关紧要的。为什么这么复杂的过程,只是为了删除一个标签并在另一个提交时重新创建它?您的回答没有错误,但是……我看不出它是如何解决这个问题的。
【解决方案2】:

我终于想出了一个不需要创建新分支的解决方案。

  1. git checkout tag_name

  2. 进行本地更改

  3. git add .git commit -m "commit message"

  4. git tag -fa tag_name

  5. git push -f origin master --tags

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 2021-11-05
    • 2022-10-25
    • 1970-01-01
    • 2018-01-27
    • 2021-12-08
    相关资源
    最近更新 更多