Git:致命错误:模糊的对象名称:“origin/release_2.6”

44

当我尝试创建一个远程跟踪分支时,我遇到了这个错误

git co -b release_2.6 origin/release_2.6
warning: refname 'origin/release_2.6' is ambiguous.
warning: refname 'origin/release_2.6' is ambiguous.
fatal: Ambiguous object name: 'origin/release_2.6'.

我只定义了这两个与release_2.6有关的refs。

git show-ref | grep "release_2.6"
a71b2da1526f73862464a23aceaa1939a8b1ace2 refs/heads/origin/release_2.6
ed1399936a8cc4cd2feed1851123af861b0ff093 refs/remotes/origin/release_2.6

有人知道这个错误是什么意思吗?

谢谢

5个回答

81

如果某个东西在refs/heads/refs/remotes/中都能找到,那么这就是不明确的。你有本地分支origin/release_2.6和远程跟踪分支release_2.6对应着远程仓库origin。虽然你可能没有一个refs/heads/origin/release_2.6分支,但你可以指定完整的引用名称来解决歧义:

git co -b release_2.6 refs/remotes/origin/release_2.6

完整的引用搜索路径在*git-rev-parse(1)*的“指定修订版本”章节中有详细描述,其中以“符号引用名称…”开头的项目。 - Chris Johnsen
2
是的,我想我不小心添加了 origin/release_2.6 分支,但在列表中没有看到它。我删除了这个本地分支,然后一切都正常了。谢谢! - stellard
9
尝试执行 git branch --set-upstream-to=... 时遇到了同样的问题。改为使用 refs/remotes/origin 而非简单地使用 origin/ 即可解决 :) 。 - Radu Murzea

15

当我使用git-svn创建远程分支时,出现了类似的错误。我有一个与本地分支同名的远程分支。你可以使用以下命令重命名本地分支:
git branch -m old_branch new_name
这只会重命名本地分支而不改变远程分支。

Shravan


8
对我来说,这只是一个愚蠢的错误。我无意中创建了一个与远程仓库同名的分支,就像在这种情况下我有一个本地分支叫做 origin/release_2.6 :)

4

当我使用git-svn克隆SVN仓库时,出现了类似的错误,但路径中没有"origin"。最终,我得到了以下引用:

 0e4b5116f69200ea0d7a2ff9f0fa15630d02b153 refs/heads/development
 0ef5969f7ee44b16817053bfe146c499be5f77b7 refs/remotes/development  

我曾试图进行分支操作,但每次都会出现“模糊对象名称”错误。后来发现,我的错误在于在进行 git svn clone 操作时没有指定 --prefix 参数。正确的命令应该是:

git svn clone --prefix origin/ --stdlayout xxxx

然后我得到了refs/remotes/origin/development等等,分支没有问题。根据man页面,你必须在前缀后面加上斜杠。

Liam


3
我得到了这个错误,是因为我有一个名为“develop”的分支和一个名为“develop”的标签。
$ git tag
develop
master
staging
v0.0.1-test
v0.0.11

删除与分支名称匹配的本地标签和远程标签对我有用。
$ git tag -d develop
$ git push origin :refs/tags/develop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接