只克隆一个分支

max*_*ax_ 383 git github

我想知道如何克隆一个分支而不是克隆整个Git存储库.

sha*_*ran 679

从公告Git 1.7.10(2012年4月):

  • git clone学会--single-branch了将克隆限制在一个分支的选项(惊喜!); 不提取未指向分支历史记录的标记.

Git实际上允许您只克隆一个分支,例如:

git clone -b mybranch --single-branch git://sub.domain.com/repo.git
Run Code Online (Sandbox Code Playgroud)

注意:您还可以添加另一个分支或"撤消"此操作.

  • @Brauson如果你只是把-b然后你克隆所有的分支,然后检查那个分支.这不是预期的结果.所以我建议你,如果有可能将git更新为lastest(或> = 1.7.10)并且该命令不会给出错误. (18认同)
  • 谢谢,!如果--single-branch给你一个错误,只需删除它并保留-b :) (5认同)
  • 任何人都知道如何克隆两个分支 - 或者将另一个分支添加到单个分支克隆仓库? (5认同)
  • 只是一个花絮,如果您看到任何与访问相关的问题,请使用 https URL 而不是 git@ URL(即 ssh URL) (2认同)
  • `--depth=1` 在这里有帮助吗?我希望如此,因为我只想在提交时检索而没有额外的文件 (2认同)

Lil*_*ard 65

您可以创建一个新的仓库

git init 
Run Code Online (Sandbox Code Playgroud)

然后使用

git fetch url-to-repo branchname:refs/remotes/origin/branchname
Run Code Online (Sandbox Code Playgroud)

仅将该分支提取到本地远程跟踪分支.

  • 您是否将"branchname"替换为您想要的分支名称? (3认同)
  • 直接使用git fetch不会添加远程.我刚刚用过:git init; git remote add origin git@github.com:...; git fetch origin <branch>:refs/remotes/origin/<branch>; git checkout <branch> (3认同)

Waq*_*qas 22

" --single-branch "开关是你的答案,但它只适用于git版本1.8.X以后,首先检查

#git --version 
Run Code Online (Sandbox Code Playgroud)

如果你已经安装了git版本1.8.X,那么只需使用"-b branch和--single branch"来克隆一个分支

#git clone -b branch --single-branch git://github/repository.git
Run Code Online (Sandbox Code Playgroud)

默认情况下,在Ubuntu 12.04/12.10/13.10和Debian 7中,默认的git安装仅适用于1.7.x版本,其中--single-branch是一个未知的交换机.在这种情况下,您需要首先从非默认的ppa安装更新的git,如下所示.

sudo add-apt-repository ppa:pdoes/ppa
sudo apt-get update
sudo apt-get install git
git --version
Run Code Online (Sandbox Code Playgroud)

安装1.8.X后,现在只需:

git clone -b branch --single-branch git://github/repository.git
Run Code Online (Sandbox Code Playgroud)

Git现在只从服务器下载一个分支.

  • +1用于快速说明如何在旧版本的Debian发行版中更新git. (2认同)

pRa*_*NaY 9

我用下面的单个git命令完成了:

git clone [url] -b [branch-name] --single-branch
Run Code Online (Sandbox Code Playgroud)