如何仅克隆Git仓库指定子文件夹?brew选subversion还是git-svn?求2023替代方案
仅克隆Git仓库指定文件夹的解决方案
一、brew安装:选subversion还是git-svn?
如果是用SVN拉取GitHub指定目录的方案,直接安装subversion即可,原因如下:
- 你提到的方案是利用GitHub提供的SVN镜像服务,直接通过
svn export命令拉取指定目录,全程不需要Git参与,git-svn完全用不上。 - git-svn是Git的扩展组件,用于Git与SVN仓库的双向同步,对于「仅拉取指定文件夹」这个需求来说,属于冗余工具,反而会增加不必要的复杂度。
- 安装命令:
brew install subversion
二、2023年除SVN外的更优解决方案
1. GitHub CLI(gh)官方工具(推荐)
这是GitHub官方推出的命令行工具,支持直接下载仓库的指定目录,操作简单且可靠:
- 安装:
brew install gh - 登录验证:
gh auth login(按照提示完成GitHub账号验证) - 下载指定目录:
gh repo download raycast/extensions --dir extensions/github - 优势:官方维护,无需处理复杂的Git配置,下载完成后直接得到目标文件夹的文件,没有冗余的Git仓库文件。
2. Git稀疏检出(Sparse Checkout)
如果你需要保留Git仓库的特性(比如后续可以更新目标目录),可以用Git的稀疏检出功能:
- 步骤:
- 创建并进入空目录:
mkdir raycast-github && cd raycast-github - 初始化Git仓库:
git init - 添加远程仓库:
git remote add origin https://github.com/raycast/extensions.git - 启用稀疏检出:
git config core.sparseCheckout true - 指定要拉取的目录:
echo "extensions/github/" >> .git/info/sparse-checkout - 拉取代码:
git pull origin main
- 创建并进入空目录:
- 优势:保留Git版本控制能力,后续可以通过
git pull更新目标目录;缺点是会拉取仓库的完整提交历史(虽然本地只保留指定目录的文件)。
3. 第三方工具(可选)
比如gitzip这类工具,不过这类工具非官方维护,稳定性和安全性不如前两种方案,仅作备选。
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

