远程存储库包含各种分支,如origin/davis_branch:

$ git branch -r
origin/HEAD -> origin/master
origin/daves_branch
origin/master

如何将daves_branch获取到本地存储库,以便它跟踪origin/davis_branch?

我尝试了:

$ git fetch origin discover
$ git checkout discover

当前回答

如果下载带有git clone<repo_url>-b<branch>(仅克隆特定分支)的存储库,则应修改<repo_name>/.git/config文件。替换或修改引用[remote“origin”]部分的fetch目标的行,让命令git fetch--all发现所有分支:

[remote "origin"]
        url = <repo_git_url>
        fetch = +refs/heads/master:refs/remotes/origin/master

确保将提取参数点设置为/heads/master。

小心git fetch,因为这会获取所有数据,所以可能需要很长时间。

其他回答

有时,你被要求不要摆弄主分支,只在远程分支工作(正如我被要求的那样)。所以你只需要远程分支。

因此,要单独克隆远程分支(没有主分支),请执行以下操作

git clone url --branch remote_branch_name

哪里remote_branch_name是远程分支的名称

例如

git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git --branch v3.15

这将确保您使用远程分支的名称将远程分支克隆到本地分支。

现在,如果您提交代码并推送,代码将单独提交给该分支。

要签出远程而非本地存在的myBranch,这对我很有用:

git fetch --all
git checkout myBranch

我收到了这条消息:

Branch myBranch set up to track remote branch myBranch from origin
Switched to a new branch 'myBranch'

只需尝试:

git pull origin your_branch_name

本地获取分支:

git fetch origin <branchName>

移动到该分支:

git checkout <branchName>

如果您有一个使用--depth 1克隆的存储库,那么列出的许多命令将无法工作。例如,请参见此处

% git clone --depth 1 https://github.com/repo/code
Cloning into 'code'...
cd code
remote: Counting objects: 1778, done.
remote: Compressing objects: 100% (1105/1105), done.
remote: Total 1778 (delta 87), reused 1390 (delta 58), pack-reused 0
Receiving objects: 100% (1778/1778), 5.54 MiB | 4.33 MiB/s, done.
Resolving deltas: 100% (87/87), done.
Checking connectivity... done.
Checking out files: 100% (1215/1215), done.
% cd code
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
% git fetch origin other_branch
remote: Counting objects: 47289, done.
remote: Compressing objects: 100% (15906/15906), done.
remote: Total 47289 (delta 30151), reused 46699 (delta 29570), pack-reused 0
Receiving objects: 100% (47289/47289), 31.03 MiB | 5.70 MiB/s, done.
Resolving deltas: 100% (30151/30151), completed with 362 local objects.
From https://github.com/repo/code
 * branch            other_branch-> FETCH_HEAD
% git checkout other_branch
error: pathspec 'other_branch' did not match any file(s) known to git.
%

在这种情况下,我会重新克隆存储库,但可能还有其他技术,例如git浅层克隆(clone--depth)错过了远程分支