12

来自Pro Git

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

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

$ git checkout -b sf origin/serverfix 设置分支 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”?

为什么?

4

3 回答 3

7
Cannot update paths and switch to branch

正如我在“使用 git 获取新的上游分支”中提到的,您可以尝试:

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

确保首先存在远程跟踪分支 (在 a 之后)origin/iss53git fetch origin

origin/iss53表示上游远程仓库中iss53有一个.origin

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

git push -u origin iss53 

iss53这将在本地分支和远程跟踪分支之间建立关联origin/iss53(跟踪新创建的分支iss53origin由推送创建)。

有关初始推送的更多信息,请参阅“为什么我需要显式推送新分支? ”。

于 2013-06-16T21:09:26.810 回答
4

Seems like you hadn't fetch that commit yet. So, first do:

git fetch origin

And then:

git checkout --track origin/iss53
于 2014-04-25T16:56:27.303 回答
0

FWIW 为其他人提供相同的错误消息:当这发生在我身上时,根本问题是我试图创建一个名称中带有空格的分支。对于我拥有的一组预置 GIT 命令,带有空格的分支是个问题。

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

于 2018-12-20T19:22:36.607 回答