我在 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
Run Code Online (Sandbox Code Playgroud)
执行命令 --force在下一次之前使用。
我不清楚这里出了什么问题。发生了什么,我该如何解决这个问题?
我的意思是:除了破坏我的本地仓库并再次克隆。
Tua*_*ran 596
您应该使用远程标签更新本地标签:
git fetch --tags -f
Run Code Online (Sandbox Code Playgroud)
然后再拉。
Vla*_*274 62
由于您说不清楚出了什么问题,我假设您没有将该标签用于任何事情,而您只想做自己的工作。
关闭此设置:
现在你已经准备好了。
详细解释:
标签只是对特定提交的引用(就像分支名称一样)。主要区别在于git(据我所知)假设标签不会改变,分支预计会被更新。
因此,“错误”是您在本地有一个名为latest指向提交 X 的标签 - 但远程有一个名为latest指向提交 Y 的标记。如果您从远程应用更改,您将覆盖本地标记。
默认情况下,VSCode 会拉取所有标签,因此您会收到错误消息。
有一个“移动”标签没有任何问题,比如latest,这不是 VSCode 考虑到的(个人意见)。
或者,您可以通过使用命令行并手动输入git pull命令来避免该问题。具体来说,您需要省略--tags以跳过该过程的步骤。
如果您这样做,您的标签将不会更新 - 但我认为这不是问题。
zhu*_*iyi 46
原因可能是您或其他贡献者删除了原始标签并重新创建了相同的标签。
解决方案:
git fetch --tags -f
Run Code Online (Sandbox Code Playgroud)
强制刷新本地标签
当使用按钮更新编辑器中的代码时,默认会首先使用git pull --tags origin master
因此,可以"git.pullTags": false在Vscode的配置文件settings.json中添加此内容
eck*_*ckc 15
编辑:需要明确的是,最初的问题与一个问题有关git。虽然可能不明显,但yarn也可能有 git 依赖项。因此,对于运行时出现此错误的 0.1% 用户来说yarn install,这是为您准备的!如果没有,只需使用已接受/最佳答案。
我在尝试运行包时遇到此错误yarn install。接受的答案适用于当前的存储库,对我不起作用,但这是有效的:
rm -rf **/node_modules && yarn cache clean
Run Code Online (Sandbox Code Playgroud)
我之前尝试过删除node_modules,猜测是清理纱线缓存造成的。
如果这是删除并重新创建标签的常见情况(例如,GitHub Actions 的建议是使用浮动主要版本标签,“最新”可能是用actions-tagger标记的内容),您可以编辑您的标签.git/config以添加以下参考规范:
[remote "origin"]
url = https://github.com/org/repo
fetch = +refs/heads/*:refs/remotes/origin/*
# extra refspec
fetch = +refs/tags/*:refs/tags/*
Run Code Online (Sandbox Code Playgroud)
由于标签不是按远程命名的,因此您应该了解这可能产生的影响,但它对于某些用例可能有意义。
要解释为什么这是必要的,请参阅git-fetch 文档(重点是我的):
在 Git 版本 2.20 之前,与使用 git-push 推送不同,任何更新都将在不包含 refspec(或)的情况下
refs/tags/*被接受。在获取时,我们混杂地认为来自远程的所有标签更新都是强制获取。从 Git 版本 2.20 开始,获取更新的工作方式与推送时相同。即,如果没有refspec(或) ,任何更新都将被拒绝。+--forcerefs/tags/*+--force