我正在尝试查看我当地的一个分支机构,名为TEAM20-lab2-release。当我尝试这样做时,我得到一个模糊的refname错误:
$ git branch TEAM20-lab2-release
warning: refname 'TEAM20-lab1-release' is ambiguous.
fatal: Ambiguous object name: 'TEAM20-lab1-release'.
以下是我的分支列表:
$ git branch -a
TEAM20-lab1
* TEAM20-lab1-release
master
remotes/origin/HEAD -> origin/master
remotes/origin/master
答案 0 :(得分:7)
通常是因为您在另一个名称空间中使用了相同的名称(而不是您的分支):
git branch -a
)2016年更新:如果分支机构和标签共享相同的名称,Git 2.12(2017年第1季度)将不会显示任何错误。
commit b284495见Dennis Kaarsemaker (seveas
)(2016年10月31日)
请commit eef2bda查看Junio C Hamano (gitster
)(2016年10月28日)
(Junio C Hamano -- gitster
--于2016年12月27日commit 6c18dd4合并)
push
:不要使用可能不明确的默认refspec当用户执行惰性“
git push
”且没有参数且push.default
设置为“upstream
”,“simple
”或“current
时“,我们在内部生成了一个refspec,它在源端具有当前分支名称并用它来推送。但是,分支名称(例如“
test
”)可能是一个含糊不清的引用名称 源存储库的上下文---可能有一个标记 例如,同名 这将触发不必要的错误,而不会在最终用户方面出现任何错误。明确并提供完整的refname作为源端以避免 歧义。
使用“current
”推送时,目的地方只发送了分支的名称并强制接收端猜测,这是同一个问题。
在那里也要明确。
答案 1 :(得分:4)
让你开始找到含糊不清的参考资料
function branchid()
{
echo $(basename "$(dirname "$1")")/$(basename "$1");
}
for ref in $(git for-each-ref | cut -f2)
do echo -e "$ref\t$(branchid "$ref")"
done |
sort --key 2 | uniq -Df 2
答案 2 :(得分:1)
尝试为本地分支设置上游分支时,我收到了相同的错误消息。
cgd@flavia-cgd-mobi:~/Projects/reporter$ git status
On branch master
nothing to commit, working directory clean
cgd@flavia-cgd-mobi:~/Projects/reporter$ git branch --set-upstream-to gerrit/master master
warning: refname 'gerrit/master' is ambiguous.
fatal: Ambiguous object name: 'gerrit/master'.
cgd@flavia-cgd-mobi:~/Projects/reporter$ git remote -vv
gerrit ssh://cgd@gerrit.server:29418/reporter (fetch)
gerrit ssh://cgd@gerrit.server:29418/reporter (push)
cgd@flavia-cgd-mobi:~/Projects/reporter$ git branch -a
gerrit/master
* master
remotes/gerrit/master
cgd@flavia-cgd-mobi:~/Projects/reporter$ git branch -d gerrit/master
Deleted branch gerrit/master (was 1234567).
cgd@flavia-cgd-mobi:~/Projects/reporter$ git branch --set-upstream-to gerrit/master master
Branch master set up to track remote branch master from gerrit.
cgd@flavia-cgd-mobi:~/Projects/reporter$ git fetch
cgd@flavia-cgd-mobi:~/Projects/reporter$ git status
On branch master
Your branch is up-to-date with 'gerrit/master'.
nothing to commit, working directory clean
正如你所看到的,我以某种方式创建了一个名为gerrit / master的本地分支,这引起了冲突,因为git无法决定是跟踪本地分支还是远程分支。删除错误的分支修复了这件事,让我再次开心。