克隆git repo的子树/子目录

克隆git repo的子树/子目录,git,git-clone,git-subtree,Git,Git Clone,Git Subtree,我在Github上有一个git回购,看起来是这样的: .git/ assets/ tools/ a.sh b.sh c.sh 当然.git文件夹不在版本控制中,但您可以理解。我想将tools/*.sh复制到本地目录,路径如下: ./scripts/git/tools 我当前的目录是一个git repo,它与远程git repo共享完全不同的历史,我只想从远程复制一些文件,不想合并任何内容 我想我可以这样做: git clone --path assets/tool

我在Github上有一个git回购,看起来是这样的:

.git/
assets/
  tools/
    a.sh
    b.sh
    c.sh
当然.git文件夹不在版本控制中,但您可以理解。我想将tools/*.sh复制到本地目录,路径如下:

./scripts/git/tools
我当前的目录是一个git repo,它与远程git repo共享完全不同的历史,我只想从远程复制一些文件,不想合并任何内容

我想我可以这样做:

git clone --path assets/tools/*.sh "$remote_repo"  ./scripts/git/tools
但是这个命令不是真的,有没有什么命令可以用来做这个

我唯一能想到的另一种方法是将整个repo克隆到某个临时目录,然后将文件复制过来,但这并没有那么有趣

我唯一能想到的另一种方法是将整个repo克隆到某个临时目录,然后将文件复制过来,但这并没有那么有趣

然而,考虑到即使部分克隆(如果存在的话)仍将保留资产/工具路径结构,这一点更可取。
你可以先做一个测试,然后复制你的文件

在Git2.17/2.18中,您可以尝试只克隆子文件夹,但前提是远程服务器确实支持此新功能


另一个更经典的选项是使用(如果远程存储库支持)最新标头的存档(zip文件):请参见“”,但应用于存档的子文件夹,而不是文件。

对于Github repo,您可以使用 工具

按如下方式安装:

git clone --path assets/tools/*.sh "$remote_repo"  ./scripts/git/tools
pip安装git+git://github.com/HR/github-clone#egg=ghclone
然后像这样使用它:

git clone --path assets/tools/*.sh "$remote_repo"  ./scripts/git/tools
ghclonehttps://github.com/HR/Crypter/tree/dev/app

在学习如何削减大额回购的肥肉时,这可能是一个很有用的复制品:我要添加的唯一一件事是可能做一个浅层克隆:git克隆--深度1--分支[分支机构名称]--单一-branch@johnb003我同意:这将真正限制克隆的数据量。