2016-12-28 107 views
1

我读过这篇文章How do I check out a remote Git branch?十几次,但仍然没有解释我所看到的。我试图设置最基本的可能场景来尝试git远程分支,所以我创建了一个回叫,其中包含一个master和一个叫做branch的分支1.0,并将其克隆到另一个回购站。现在,在克隆回购:git - 不能做一个远程跟踪分支

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

(FWIW的“主人”是绿色的,其他的线是红色除外“ - >产地/主”,这是白色)

这一切看起来据我所知,这是合理的。但是,如果我尝试任何下面的命令:

git checkout 1.0 
git checkout origin/1.0 
git checkout remotes/origin/1.0 

我得到的“分离的头”的消息,所以我认为这是错误的做法。我读过的所有东西都告诉我这应该创建一个跟踪分支。 (很明显,我在键入“混帐取”,直到我的脸是青为好)

如果我尝试

git checkout -b 1.0 origin/1.0 

与否我用--track,似乎以创建跟踪分支(与git branch -vv验证),但是当我试图把那个跟踪分支我得到的错误error: src refspec 1.0 matches more than one.

我明白什么该消息意味着,它可能在一些奇怪的情况下,同一个名字的不同分支的工作,但我猜想在我的情况下(我重复的是设置最简单的“香草”情景)是不是正确的方式去做事情。

+0

你用什么命令来推送? – Nogoseke

+0

[git:switch branch without detaching head]可能重复(http://stackoverflow.com/questions/471300/git-switch-branch-without-detaching-head) –

+0

@LuísFelipeNogoseke我试过'git push', 'git push 1.0',甚至'git push origin/1.0'但都给出了完全相同的结果 – Andy

回答

2

从错误消息:

error: src refspec 1.0 matches more than one. 

我们可以假设,你可能有,不知何故,创建了多个分支具有相同的名称,或具有相同名称的标签。

检查git branch -a只有一个分支名为“1.0”。并使用git tag只是为了确保您也没有具有相同名称的标签。

如果您可以选择“开始清理”再次克隆存储库,那么使用git checkout -b 1.0 origin/1.0是创建名为“1.0”的本地分支的正确方法,该分支跟踪具有相同名称的远程分支。然后git push origin 1.0就是你想用来推动你的改变。

+1

宾果! - 我也有一个名为1.0的标签。我再次设置了测试,确保标签名称和分支名称不重叠,现在一切正常。谢谢 – Andy