如何仅从git克隆选定的分支?

如何仅从git克隆选定的分支?,git,github,gitlab,git-bash,Git,Github,Gitlab,Git Bash,我在我的项目中有16个分支,我只想克隆4个,分别命名为Dev、UAT、prepod、Prod,我该怎么做 如果我克隆,这将克隆所有分支 我知道如何克隆单个分支 首先尝试克隆单个分支,然后获取其余分支 git clone -b Dev --single-branch <url> -- foo cd foo git fetch origin UAT Preprod Prod git checkout UAT git checkout Preprod git checkout Prod

我在我的项目中有16个分支,我只想克隆4个,分别命名为Dev、UAT、prepod、Prod,我该怎么做

如果我克隆,这将克隆所有分支


我知道如何克隆单个分支

首先尝试克隆单个分支,然后获取其余分支

git clone -b Dev --single-branch <url> -- foo
cd foo
git fetch origin UAT Preprod Prod
git checkout UAT
git checkout Preprod
git checkout Prod
克隆是一种方便的快捷方式,可以解决一些常见的用例。它不直接支持您的用例,尽管您仍然可以使用它来简化流程

克隆人做什么

克隆初始化repo、设置默认远程原点、设置refspec、获取,除非您另行通知,否则将签出默认分支

什么-单个分支做什么

单分支选项主要只是更改refspec,以便默认情况下,fetch仅复制一个分支

这需要权衡。这意味着你的回购协议将悄悄地忽略像新分支机构这样的事情。对于给定的用例,这些缺点可能很小,但同时限制获取内容的优点也几乎总是很小。如果它们不是,你可能想考虑是否有其他可解决的问题影响到你的回购,比如历史上应该由LFS管理的大文件。 如何获得四个分支

您仍然可以使用clone with-single branch来开始工作。然后,您只需要修改远程服务器的默认refspec,以便它将获取所有四个分支。您可以通过设置remote.origin.fetch来实现这一点,前提是远程设备被称为origin;查看位于的git配置文档并搜索remoate..fetch


你知道你仍将克隆这些分支的历史记录吗?@evolutionxbox,我没有,但我没有任何历史记录,只需克隆我的分支。记住,提交就是历史记录。除非你第一次提交,否则每个分支都会有历史记录。
# having cloned with single branch Dev...
git config --add remtoe.origin.fetch UAT refs/remotes/origin/UAT
git config --add remtoe.origin.fetch Prepod refs/remotes/origin/Preprod
git config --add remtoe.origin.fetch Prod refs/remotes/origin/Prod