如何获取远程git仓库的一个分支?

我想抓取一个远程仓库的一个分支(不是全部),并创build一个本地跟踪分支,可以跟踪远程分支的进一步更新。 远程存储库中的其他分支非常大,所以我想避免提取它们。 我如何做到这一点?

编辑:我自己想出来,但StackOverflow拒绝让我提供答案作为答案,所以我会把它放在这里的问题,而不是。

您可以使用-t选项来进行远程添加,例如:

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

您可以使用多个“ -t branch ”选项来抓取多个分支。

 git fetch <remote_name> <branch_name> 

为我工作。

其中一个方法如下:

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

这虽然没有设置跟踪。

有关更多信息,请参阅git fetch的文档 。

编辑 :作为@ user1338062 注意到 :如果你还没有一个本地克隆库,你想添加新的分支,但是你想创build一个新的本地仓库,那么git clone --branch <branch_name> --single-branch <repo_url>提供了一个较短的解决scheme。

从作者的post复制:

使用-t选项来进行git remote add ,例如:

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

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

要更新现有的远程来跟踪特定的分支只使用:

 git remote set-branches <remote-name> <branch-name> 

git help remote

 set-branches Changes the list of branches tracked by the named remote. This can be used to track a subset of the available remote branches after the initial setup for a remote. The named branches will be interpreted as if specified with the -t option on the git remote add command line. With --add, instead of replacing the list of currently tracked branches, adds to that list. 

一种方法来做到这一点:

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

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

取回远程分支:

 git fetch origin branch-name 

创build一个本地分公司的“分公司名称”,用于从原点追踪远程分公司的“分公司名称”。

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

列出所有分支

 git branch -a 

如果你想改变“git pull”和“git fetch”的默认值来只读取特定的分支,那么你可以编辑.git / config,使得远程configuration如下所示:

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

这只会在默认情况下从原始位置获取主设备。 查看更多信息: https : //git-scm.com/book/en/v2/Git-Internals-The-Refspec

编辑:刚才意识到这是同样的事情,-t选项为git远程添加。 至less这是在添加远程程序后执行它的好方法,如果您不想删除远程程序并使用-t再次添加。

为了完整起见,下面是一个新的结帐示例命令:

 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版本:2.74

这是我如何做到的:

 git remote add [REMOTE-NAME] [REMOTE-URL] git fetch [REMOTE-NAME] -- [BRANCH] 

我的解决方法:

 git fetch --depth=1 git checkout <branch_name> 

如果你没有本地克隆:

 git clone --depth 1 -b <branch_name> <repo_url> 

对于初始的git分支的克隆:

 git clone -b "Branch-Name" "Repo-Url" "Dir-Name" 

例:

 git clone -b featureA https://gitlab.com/XXXXX/XXXX.git folderA 

在这里,分支featureA将被克隆到目录folderA

对于现有的git存储库

 git fetch -b "remote-name" "branch-name" 

例:

 git fetch -b origin featureA