无法同时创建本地和远程分支(跟踪)

时间:2013-06-16 20:32:12

标签: git version-control git-branch git-remote

来自Pro Git

  

如果您愿意,可以设置其他跟踪分支 - 那些不支持分支   跟踪原点上的分支,不跟踪主分支。这很简单   case是你刚才看到的例子,运行git checkout -b [branch]   [remotename] / [分支]

     

$ git checkout --track origin / serverfix Branch serverfix设置为   跟踪远程分支refs / remotes / origin / serverfix。切换到新的   分支“serverfix”

     

$ git checkout -b sf origin / serverfix Branch sf设置为跟踪   远程分支refs / remotes / origin / serverfix。切换到新的   分支“sf”

我的理解是,这提供了一种创建本地分支和上游分支的方法。

但是当我这样做时:

git checkout -b iss53 origin/iss53我明白了:
fatal: Cannot update paths and switch to branch 'iss53' at the same time.

当我这样做时:
git checkout --track origin/iss53我明白了:

  

致命:无法更新路径并切换到分支'iss53'   时间。您是否打算结帐“origin / iss53”哪个不可以   解决为提交?

为什么?

3 个答案:

答案 0 :(得分:7)

Cannot update paths and switch to branch

正如我在“Get new upstream branch with git”中提到的那样,您可以尝试:

# let's create a new local branch first
git checkout -b iss53
# then reset its starting point
git reset --hard origin/iss53 

确保remote tracking branch origin/iss53确实存在(在git fetch origin之后)

origin/iss53表示iss53引用的upstream远程仓库中有origin

如果没有这样的分支,那么你只创建一个本地分支iss53,然后像这样推送它:

git push -u origin iss53 

这将在本地分支iss53和远程跟踪分支origin/iss53之间建立关联(跟踪由{push}创建的iss53上新创建的分支origin

有关初次推送的详情,请参阅“Why do I need to explicitly push a new branch?”。

答案 1 :(得分:4)

好像你还没有获取提交。所以,首先要做:

git fetch origin

然后:

git checkout --track origin/iss53

答案 2 :(得分:0)

针对其他人的FWIW,具有相同的错误消息:发生这种情况时,潜在的问题是我试图创建一个名称中带有空格的分支。对于我拥有的一组罐头GIT命令,带空格的分支是个问题。

(ObDisclaimer:我距离git专家非常非常远。我只知道我遇到了相同的错误消息问题,并且解决方案与接受的答案不同)