在尝试推入 SourceTree 时,“更新被拒绝,因为标记已经存在”

当尝试通过源代码树推送时,我得到以下错误:

git -c diff.mnemonicprefix=false -c core.quotepath=false -c credential.helper=sourcetree push -v --tags origin refs/heads/master:refs/heads/master
Pushing to https://user@github.com/repo.git
To https://user@github.com/repo.git
= [up to date]      master -> master
...
! [rejected]        example_tag -> example_tag (already exists)
updating local tracking ref 'refs/remotes/origin/master'
error: failed to push some refs to 'https://user@github.com/repo.git'
hint: Updates were rejected because the tag already exists in the remote.
Completed with errors, see above

据我所知,我没有对这个标签做任何修改。我怎么才能修复它?

109774 次浏览

如果您没有对要保留的标记进行任何本地更改,那么可以使用 删除因为它 < em > 已经存在而被拒绝的标记(本例中为 example_tag) :

  1. 右键单击标记并选择删除它(确保 取消检查从所有遥控器上删除标记复选框)。
  2. 选择 去捡选项(在本地获取和存储所有标记,必须启用 没有)。
  3. 您现在应该有刚刚删除回来的标记,并尝试 用力将不再显示该错误消息。

这在 SourceTree 中很常见的原因是,在默认情况下,推出所有标签选项被设置为 开始。(隐藏此错误的另一种方法是取消选中该选项。)

您还应该能够在 git bash 中解决这个问题(在 Source Tree UI 中单击“ Terminal”按钮)。类型:

git pull --tags

如果有冲突标记,可以在命令中包含 -f选项,以用远程版本覆盖本地冲突标记。

git pull --tags -f

在确认 git 推送时,取消选中 UI 底部的 push all tags

请确保您取消选中的“推所有标签”按钮,同时推。

enter image description here

git pull --tags工作得非常好,但有时即使使用这个命令也会出错:

 ! [rejected]        example_tag      -> example_tag  (would clobber existing tag)

这可以通过命令 : git pull --tags -f来解决

-f代表 力量

来源:

Https://github.com/concourse/git-resource/issues/233

在 SourceTree 中,这似乎是可行的:

  1. 单击 Fetch 图标
  2. 检查“获取所有标签”
  3. 点击 OK