我在Github上有一个git repo,看起来像这样:
.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
但是该命令不是真实的,我可以使用一些命令来做到这一点吗?
我想到的唯一另一种方法是,将整个存储库克隆到某个临时目录,然后将文件复制过来,但这并不是那么有趣。
答案 0 :(得分:2)
我想到的唯一另一种方法是,将整个存储库克隆到某个临时目录,然后将文件复制过来,但这并不是那么有趣。
但是,考虑到即使存在部分克隆,仍然会保留资产/工具的路径结构,因此这是可取的。
您可以执行sparse checkout elsewhere,然后复制文件。
使用Git 2.17 / 2.18,您可以尝试partial or narrow clone仅克隆一个子文件夹,但这假设远程服务器确实支持此新功能。
另一个更经典的选择是使用(如果远程存储库支持的话)最新HEAD的归档文件(zip文件):请参阅“ How to checkout only one file from git repository ('sparse checkout')?”,但适用于归档文件的子文件夹,而不是文件。
答案 1 :(得分:-1)
对于GitHub存储库,您可以使用https://github.com/HR/github-clone
克隆任何GitHub存储库的任何子目录(在任何参考处)。