我想获取远程存储库的单个分支(不是所有分支),并创建一个本地跟踪分支,该分支可以跟踪对该远程分支的进一步更新。远程存储库中的其他分支非常大,所以我希望避免获取它们。我怎么做呢?


当前回答

让我用我的两便士来曲解马德森先生的回答:

Git获取<remote_name_or_url> <branch_name> git checkout FETCH_HEAD -B <branch_name>

与马德森的提议相比,这两条线路的主要优势在于,即使分支机构已经在本地存在,它也能工作。

其他回答

一种方法是:

在.git/config中获取远程回购应该设置为获取任何分支:

   [remote "origin"]
            fetch = +refs/heads/*:refs/remotes/origin/*

获取远程分支:

git fetch origin branch-name

创建一个本地分支'branch-name',用于从原点跟踪远程分支'branch-name'。

git checkout -b branch-name origin/branch-name

列出所有分支

git branch -a

一种方法是:

git fetch <remotename> <remote branch>:refs/remotes/<remotename>/<local branch>

但这并没有设置跟踪。

要了解更多信息,请参阅git获取的文档。

编辑:正如@user1338062所指出的:如果你想添加新分支的地方还没有存储库的本地克隆,但你想创建一个新的本地存储库,那么git clone——branch <branch_name>——single-branch <repo_url>提供了一个更短的解决方案。

为了完整起见,这里有一个新签出的示例命令:

git clone --branch gh-pages --single-branch git://github.com/user/repo

正如在其他回答中提到的,它设置remote.origin.fetch如下所示:

[remote "origin"]
        url = git://github.com/user/repo
        fetch = +refs/heads/gh-pages:refs/remotes/origin/gh-pages
git fetch <remote_name> <branch_name>

为我工作。

摘自作者的文章:

使用-t选项来远程添加git,例如:

git remote add -t remote-branch remote-name remote-url

您可以使用多个-t分支选项来获取多个分支。