2011-03-12 192 views
7

我有一个简单的项目在Git仓库中进行管理。到目前为止我没有故意创建的任何分支,但是当我试图创建我第一次使用今天创建分支时出错:“警告:refname'master'不明确。”

$ git branch mybranch 

我看到这个错误:

warning: refname 'master' is ambiguous. 
fatal: Ambiguous object name: 'master'. 

深入探讨:

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

在Git中看到这是否正常?我是否错误地克隆了我的存储库?解决这个问题的最好方法是什么?

+0

看起来您在克隆时做了一些奇怪的事情。要正确克隆,请使用'git clone [url] [destination path]'。如需更多诊断帮助,后当你运行'git配置你会得到什么-l' – 2011-03-12 01:41:19

+0

感谢马克,我得到: core.repositoryformatversion = 0 core.filemode =真 core.bare =假 core.logallrefupdates =真 core.ignorecase = true remote.master.fetch = + refs/heads/*:refs/remotes/master/* [email protected]:###/###。git branch.master.remote = master branch.master.merge = refs/heads/master – 2011-03-12 01:55:56

回答

11

这似乎是不明确的,因为您的远程名称和分支名称都是master。您可以尝试通过运行

git remote rename master origin 
6

的规则如何修改规范进行解释gitrevisions(7)给出了重命名远程到更传统的origin(从git(1)引用文档的其他位中)。

简而言之,master在应用于存储库中的ref时会匹配两种模式:本地分支(refs/heads/<name>)和远程的默认远程跟踪分支(refs/remotes/<name>/HEAD)。

这些可以通过对本地分支使用heads/master和对远程跟踪分支使用master/HEAD(或master/master)来消除歧义。

由于Andrew Marshall提到,您可能需要重命名远程,以免首先消除歧义。

+0

+1用于引用解释此处的文档。我希望git没有尝试'refs/remotes//HEAD' - 它只会让那些不太确定遥控器和分支是什么的人造成混淆,对于那些了解其差异的人没有什么好处。 – 2011-03-12 09:10:05