"更新被拒绝,因为标签已经存在"在尝试推送SourceTree时

时间:2015-08-10 21:41:13

标签: git push atlassian-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

据我所知,我没有对此标记进行任何更改。我该如何解决这个问题?

8 个答案:

答案 0 :(得分:162)

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

git pull --tags

答案 1 :(得分:98)

如果您尚未对要保留的代码进行任何本地更改,则可以删除因已存在而被拒绝的代码 ({{1在这种情况下):

  1. 右键点击代码并选择将其删除(请务必取消选中 从所有遥控器中删除代码复选框。)
  2. 选择抓取选项(在本地抓取并存储所有代码,但必须启用)。
  3. 您现在应该删除刚删除的标记,并且尝试推送将不再显示该错误消息。
  4. 这在SourceTree中很常见的原因是默认情况下推送所有标记选项设置为 。 (隐藏此错误的另一种方法是取消选中该选项。)

答案 2 :(得分:13)

确认您的git push后,取消选中UI底部的push all tags

答案 3 :(得分:8)

确保在按下时取消选中“按下所有标签”按钮。

enter image description here

答案 4 :(得分:8)

git pull --tags确实运行良好,但是有时即使使用此命令也会出现错误。错误消息示例:

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

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

来源:

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

答案 5 :(得分:0)

是的,确实,在push --tags之前先拉出标签。解决了我的问题。

答案 6 :(得分:0)

在SourceTree中,这似乎起作用:

  1. 点击获取图标
  2. 选中“获取所有标签”
  3. 点击确定

答案 7 :(得分:-2)

我通过以下方式解决了 SourceTree 上的问题:

  1. 通过选择“从所有遥控器中删除标签”删除标签”
  2. 重新创建标签