如何获取远程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