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

其他回答

在我看来,这一行命令是获取和签出本地不存在的远程分支的最简单方法:git获取和git签出remote_branch

如果下载带有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 fetch && git checkout the-branch-name

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

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。在本地列表中发现。

[快速回答]

有很多选择,我最喜欢的是:

-备选方案1:

git fetch --all
git checkout YourBranch

使用此替代方法时,请使用远程存在但不在本地的分支。

-备选方案2:

git checkout -b 'YourBranch' origin/'YourRemote'

也许,这是最简单的方法。