结帐分支在不同的遥控器上

时间:2015-06-16 08:36:10

标签: git branch

除了upstream之外,我还有另一个远程origin的仓库。我可以git checkout origin/master,但当我运行git checkout upstream/master时,我得到:

error: pathspec 'upstream/master' did not match any file(s) known to git.

这也不起作用:

$ git fetch upstream
From https://github.com/getsentry/sentry
 * branch            HEAD       -> FETCH_HEAD
$ git co -b asdf --track upstream/master
fatal: Cannot update paths and switch to branch 'asdf' at the same time.
Did you intend to checkout 'upstream/master' which can not be resolved as commit?

如何像upstream遥控器一样检查origin遥控器上的分支机构?我的git版本是2.1.2。

3 个答案:

答案 0 :(得分:26)

只需从远程获取refs(这将获取上游repo的所有分支,提交,引用等)

git fetch upstream

在此之后,检查所需的分支(这将创建分支的本地副本)

git checkout -b <branchname> --track upstream/<branchname>

现在,如果您希望将来在此分支中进行更改,您需要做的只是

git pull upstream <branchname>

如上所述here,尝试对分支名称进行显式提取:

git fetch upstream master:branch_name

答案 1 :(得分:4)

如果您刚刚添加了遥控器,则需要fetch以便Git知道哪些分支可用:

git fetch upstream master

在此之后你可以做到

git checkout upstream/master

没有任何问题。

答案 2 :(得分:0)

以更简洁的方式(我使用的是git 2.28),您可以说

git fetch upstream

然后

git checkout -b <branch_name> --guess

其中--guess标志检查对应于<branch_name>的分支是否存在于任何远程控制器上并跟踪相应的远程控制器(docs here)。