如何摆脱“将痛击现有标签”;

我在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执行该命令会有所帮助。

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

我的意思是:除了破坏我的本地回购和再次克隆。

172014 次浏览

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

关闭此设置:

enter image description here

或者在设置中添加这个"git.pullTags": false。json文件”

现在你都准备好了。


详细解释:

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

所以,“错误”;是你在你的本地有一个称为latest的标记指向提交X -但远程有一个称为latest的标记指向提交y。如果你从远程应用这个更改,你将覆盖你的本地标记。

VSCode将默认拉出所有标签,因此您将得到错误。

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


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

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

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

git fetch --tags -f

然后再拉。

原因

在远程上,有人删除了一个标记并创建了一个具有相同名称的新标记,那么这将在您的本地上发生

编辑:为了澄清,最初的问题与git问题有关。虽然可能不明显,但yarn也可以有git依赖项。因此,对于运行yarn install时有此错误的0.1%的用户,这是为你准备的!如果不是,就用公认的答案。


我在试图运行yarn install时得到了这个包的错误。接受的答案是当前的回购,对我来说不适用,但这是有效的:

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

我之前试过删除node_modules,猜是清理纱线缓存造成的。

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

解决方案:

git fetch --tags -f

强制刷新本地标签


当使用按钮更新编辑器中的代码时,默认值将首先使用git pull --tags origin master

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