首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >git refname 'origin/master‘不明确

git refname 'origin/master‘不明确
EN

Stack Overflow用户
提问于 2014-09-26 03:37:22
回答 5查看 56K关注 0票数 77

我有一个跟踪几个远程分支的git存储库:

代码语言:javascript
运行
复制
$ git branch -a
* master
  remotes/git-svn
  remotes/origin/master
  remotes/trunk

当我尝试设置一个默认设置时,我得到了以下错误:

代码语言:javascript
运行
复制
$ git branch --set-upstream-to=origin/master master
warning: refname 'origin/master' is ambiguous.
fatal: Ambiguous object name: 'origin/master'.

我想要删除一些远程主分支,但主引用仍然在那里。如何删除它们才能将默认上游分支设置为origin/master

代码语言:javascript
运行
复制
$ git show-ref master
cba97a58c99743c355b569bbf35636c8823c2d96 refs/heads/master
6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs/origin/master
d83f025cd3800ed7acd76b2e52ae296e33f1cd07 refs/original/refs/heads/master
cba97a58c99743c355b569bbf35636c8823c2d96 refs/remotes/origin/master
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-09-26 04:30:14

的输出git branch -a显示您有一个远程跟踪分支,名为origin/master..。完全正常。

但是,git show-ref master包含

代码语言:javascript
运行
复制
6726b4985107e2ddc7539f95e1a6aba536d35bc6 refs/origin/master

这表明您很可能运行了类似以下低级命令的命令:

代码语言:javascript
运行
复制
git update-ref refs/origin/master master

此命令创建一个分支(指向与相同的提交master)调用origin/master,但直接生活在refs/,即外部refs/heads/

命名空间,本地分支通常位于该命名空间。非常可疑..。你是故意这样做的吗?

这样的分支不会被列出git branch -a..。然而,Git感到困惑,因为它看到了两个refnames以结尾的分支origin/master:

  • refs/remotes/origin/master,您的远程跟踪分支,以及
  • refs/origin/master即您在外部(无意中)创建的本地分支refs/heads/..。

解决方案

如果你这样做了注释意味着创造refs/origin/master

只需将其删除:

代码语言:javascript
运行
复制
git update-ref -d refs/origin/master

然后,就不会有任何模棱两可的地方了,Git会在您尝试设置master在上游。

如果你真的想创建refs/origin/master

若要避免歧义,只需指定完整要设置为的分支的refname master的上游:

代码语言:javascript
运行
复制
git branch --set-upstream-to=refs/remotes/origin/master master

为了修正我的想法,下面是一些代码,它们在我的一个GitHub代码库中重现了这种情况:

代码语言:javascript
运行
复制
$ cd ~/Desktop
$ git clone https://github.com/Jubobs/gitdags && cd gitdags

$ git update-ref refs/origin/master

$ git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/master

$ git show-ref master
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/heads/master
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/origin/master
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/HEAD
15b28ec22dfb072ff4369b35ef18df51bb55e900 refs/remotes/origin/master

$ git branch --set-upstream-to=origin/master master
warning: refname 'origin/master' is ambiguous.
fatal: Ambiguous object name: 'origin/master'.

$ git update-ref -d refs/origin/master
$ git branch --set-upstream-to=origin/master master
Branch master set up to track remote branch master from origin.
票数 113
EN

Stack Overflow用户

发布于 2014-09-26 03:50:24

您可能不小心创建了一个名为‘master/master’的本地ref

例如,如果你这样做了

代码语言:javascript
运行
复制
git branch origin/master

这会导致这个问题。这看起来像是可疑的"refs/origin/master“。“refs/head/ master”是你的本地主机,"refs/remotes/origin/master“是你的远程分支引用,而"refs/origin/master”可能是一个错误,它会把你搞得一团糟。

你只需要删除那个引用(git update-ref -d ),事情就会重新开始。

票数 38
EN

Stack Overflow用户

发布于 2016-03-14 13:21:38

由于名为"master“的意外标记,我遇到了一个非常类似的问题,如git show-ref master作为refs/tags/master..。这种情况下的修复方法是:

代码语言:javascript
运行
复制
git tag -d master
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26046698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档