远程存储库包含各种分支,如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 fetch origin <branchName>

移动到该分支:

git checkout <branchName>

其他回答

使用此简单命令:

git checkout -b 'your_branch' origin/'remote branch'

检查.git/config文件,特别是该远程设备的fetch跟踪。

[remote "randomRemote"]
    url = git@github.com:someUser/someRepo.git
    fetch = +refs/heads/*:refs/remotes/randomRemote/*

如果头/*指向randomRemote/*,当您运行gitfetchrandomRemote时,它将获取所有分支。

然后你就可以结账了。

否则

您需要使用此命令将远程分支添加到跟踪中。运行此命令后,请检查.git/config。你会明白的。git remote set branches--add randomRemote randomBranch运行git fetch randomRemote。这将获取远程分支。现在您可以运行git checkout randomBranch。

只需尝试:

git pull origin your_branch_name

如果您有一个使用--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)错过了远程分支

我想给您一个命令行,用于将所有远程分支提取到本地并切换到所需的新创建的本地分支:

git fetch && git checkout discover

运行上述命令后,您将收到以下消息:

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

第一行表示切换到新分支-为什么新?它已经在远程!

但实际上你也必须在本地创建它。该分支从远程索引中获取,并在本地为您创建。

这里的discover是从存储库的远程分支discover创建的一个新分支。

但第二行比第一行提供了更多信息,告诉我们:

我们的分支机构旨在跟踪同名的远程分支机构。

尽管gitfetch会将所有分支获取到本地。但如果您在git分支之后运行它,您将只看到本地的master分支。为什么?

因为对于远程中的每个分支,您也必须在本地创建它,以便将其作为gitcheckout<branchname>进行跟踪,正如我们在上面的示例中所做的那样。

运行gitcheckout命令后,您可以运行gitbranch,现在您可以看到这两个分支:

master和2。在本地列表中发现。