远程存储库包含各种分支,如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 checkout -b branch_name
git pull remote_name branch_name

其他回答

检查.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 checkout <branch_name>

并且得到

Branch <branch_name> set up to track remote branch <branch_name> from origin.
Switched to a new branch '<branch_name>'

如果下载带有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获取远程分支我的同事怎么能具体地拉动那个分支。

如果问题是,我如何才能使用远程分支,或者我如何Git签出远程分支?,更简单的解决方案是:

使用Git(>=1.6.6),您可以使用:

git checkout <branch_name>

如果找不到本地<branch_name>,但恰好在一个远程中存在具有匹配名称的跟踪分支,请将其视为等同于:

git checkout -b <branch_name> --track <remote>/<branch_name>

参见Git签出文档

对于您的朋友:

$ git checkout discover
Branch discover set up to track remote branch discover
Switched to a new branch 'discover'

使用gitbranch-a(本地和远程分支)或gitbranch-r(仅远程分支)查看所有远程及其分支。然后,您可以对远程执行git checkout-t remotes/repo/branch并创建本地分支。

还有一个git-ls-remote命令,用于查看该远程的所有ref和标记。