注意:git1.7.10(2012年4月)实际上只允许你克隆一个分支:
# clone only the remote primary HEAD (default: origin/master)
git clone <url> --single-branch
# as in:
git clone <url> --branch <branch> --single-branch <folder>
注意:
<url>是远程存储库的url,不引用克隆的分支
<folder>是要克隆存储库的本地文件夹
你可以在t5500-fetch-pack.sh中看到:
test_expect_success 'single branch clone' '
git clone --single-branch "file://$(pwd)/." singlebranch
'
Tobu评论说:
这在做浅克隆时是隐式的。
这使得git clone—depth 1成为节省带宽的最简单方法。
从Git 1.9.0(2014年2月)开始,浅克隆支持数据传输(推/拉),所以这个选项现在更有用了。
详见“git克隆——深度1(浅克隆)比它所做的更有用吗?”。
“撤销”浅克隆的详细信息见“将浅克隆转换为完整克隆”(git 1.8.3+)
# unshallow the current branch
git fetch --unshallow
# for getting back all the branches (see Peter Cordes' comment)
git config remote.origin.fetch refs/heads/*:refs/remotes/origin/*
git fetch --unshallow
正如克里斯评论的那样:
将缺失的分支反向转换为单个分支的魔法线是(git v2.1.4):
git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch --unshallow
在Git 2.26 (Q1 2020)中,“Git克隆-递归-子模块-单分支”现在在克隆子模块时使用相同的单分支选项。
参见Emily Shaffer (nasamuffin)的commit 132f600, commit 4731957(2020年2月21日)。
(由Junio C Hamano合并- gitster - in commit b22db26, 05 Mar 2020)
克隆:在——递归子模块期间传递——单分支
署名:Emily Shaffer
获奖嘉宾:杰夫·金
以前,执行“git克隆—递归—子模块—单分支”会导致子模块克隆所有分支,即使超级项目只克隆了一个分支。
管道——通过子模块帮助框架的单个分支,使其稍后“克隆”。