【问题标题】:How to get rid of "would clobber existing tag"如何摆脱“会破坏现有标签”
【发布时间】:2020-01-21 16:15:49
【问题描述】:

我在 VSCodium 中使用 git,每次尝试拉 git 时都会抱怨。

查看我看到的日志

> git pull --tags origin master
From https://github.com/MY/REPO
 * branch            master     -> FETCH_HEAD
 ! [rejected]        latest     -> latest  (would clobber existing tag)
   9428765..935da94  master     -> origin/master

使用--force 执行命令会帮助到下一次。

我不清楚这里出了什么问题。发生了什么,我该如何解决这个问题?

我的意思是:除了破坏我的本地存储库并再次克隆。

【问题讨论】:

    标签: git


    【解决方案1】:

    原因可能是您或其他贡献者删除了原始标签并重新创建了相同的标签。

    解决办法:

    git fetch --tags -f
    

    强制刷新本地标签


    在编辑器中使用按钮更新代码时,默认会先使用git pull --tags origin master

    因此,可以在Vscode的配置文件settings.json中添加这个"git.pullTags": false

    【讨论】:

      【解决方案2】:

      既然你说不清楚出了什么问题,我假设你没有将这个标签用于任何事情,你只是想做你自己的工作。

      关闭此设置:

      或者在 settings.json 文件中添加这个"git.pullTags": false`

      现在一切就绪。


      详细解释:

      标签只是对特定提交的引用(就像分支名称一样)。主要区别在于git(据我所知)假设标签不会改变,而分支预计会被更新。

      因此,“错误”是您在本地有一个名为 latest 的标签指向提交 X - 但远程有一个名为 latest 的标签指向提交 Y。如果您从远程应用更改你会覆盖你的本地标签。

      VSCode 默认会拉取所有标签,因此您会收到错误消息。

      拥有像latest 这样的“移动”标签并没有任何错误,这不是 VSCode 考虑的(个人意见)。


      或者,您可以通过使用命令行并手动输入git pull 命令来避免此问题。具体来说,您需要省略--tags 以跳过该过程的这一步。

      如果您这样做,您的标签将不会更新 - 但我认为这不是问题。

      【讨论】:

      • 非常感谢。我不得不更新我的 VSCodium,但它成功了。我想,我也可以摆脱我的本地标签?
      • 在下面查看我的答案
      • 我认为这个答案更好,因为它将永久解决问题,而不仅仅是一次性修复。如果您的团队定期重新标记,则特别有用。
      • 即使我使用了描述的解决方案,我也发现文章stackoverflow.com/a/5373319/2724543中描述的解决方案有助于解决错误。
      • 对于那些看不到图像的人来说,它是 Git: Pull Tags [] git fetch all tags while pull in vscode settings
      【解决方案3】:

      我在尝试运行 yarn install 时收到此包错误。接受的答案是针对当前回购的,对我不起作用,但这有效:

      rm -rf **/node_modules && yarn cache clean
      

      我之前试过只删除node_modules,猜想是清理纱线缓存的原因。

      【讨论】:

      • 什么是yarn,它和git有关系吗?
      • yarn 是一个包管理器,通常用作npm 的替代品。您可以添加一个 git 依赖项以从 git repo 安装,而不是使用包。我假设重置纱线缓存允许它正确更新 git 标签,类似于接受的答案建议获取标签的方式。
      【解决方案4】:

      你应该用远程标签更新你的本地标签:

      git fetch --tags -f
      

      然后再拉一次。

      【讨论】:

      • 这对我有用。我遇到了 VSCode 的问题,然后在命令行中运行它解决了这个问题。 :)
      • 谢谢,您能详细解释一下吗?这是一次性命令吗,究竟是什么问题以及如何解决它..
      • @Sagivb.g 在远程,有人删除标签并创建一个具有相同名称的新标签,然后这将发生在您的本地
      • 是的 - 这发生在我身上,因为我们最近添加了 CI 以继续替换 latest 标签
      • VSCode 应该把它添加到Tags 菜单中。
      猜你喜欢
      • 1970-01-01
      • 2020-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-06
      • 2021-08-26
      • 1970-01-01
      • 2011-11-05
      相关资源
      最近更新 更多