我有这个:
$ git branch -r
github/foo/a-branch
通常,这有效:
$ git checkout a-branch
error: pathspec 'a-branch' did not match any file(s) known to git.
当然,a-branch
不存在;通常,git会创建一个新的跟踪分支来跟踪远程中的跟踪分支。也就是说,如果我重命名远程:
$ git remote rename github/foo github-foo
$ git checkout a-branch
Branch a-branch set up to track remote branch a-branch from github-foo.
Switched to a new branch 'a-branch'
为什么git
会为我设置跟踪分支,为什么遥控器的名称会影响?
答案 0 :(得分:0)
您是否尝试明确指定要跟踪的远程分支的完整路径规范?
git checkout -b a-branch --track github/foo/a-branch
此外,关于跟踪分支的设置,请参考http://git-scm.com/docs/git-checkout
如果找不到
<branch>
但是在一个具有匹配名称的遥控器(称为<remote>
)中确实存在跟踪分支,则将其视为等效于
$ git checkout -b <branch> --track <remote>/<branch>
Git还有一个branch.autosetupmerge
配置设置,可以自动设置从您拉出的遥控器开始的跟踪。