正確にいえば clone ではないですが、やりたいこととしては同じだと思います。
巨大なリポジトリの中の一部のファイルだけを取得したい場合は以下のようにすれば良いようです
$ git archive --remote=<repo_url> <branch> <path> | tar xvf -
Githubだとサポートしてない問題
ただ、問題点としてGithubだと git archive
のリモートでの取得は対応していないようです。(Gitlabだと動作しましたが)
"git archive" and github
代わりに svn export
は使えるとの情報はありました。
git export from github remote repository - Stack Overflow
GitHubから特定のディレクトリだけを直接ダウンロード - Qiita
$ svn export https://github.com/vim/vim/branches/master/tools tools
A tools
A tools/rename.bat
Exported revision 11703.
svn使っちゃうとちょっとあれですが、目的は果たせるということで。
備考:sparse-checkoutについて
検索するとsparse-checkoutとかがよく出てきますが、こちらは一度全ファイルをcloneしてるので、巨大なリポジトリの場合は結局一度は時間のかかるcloneを実施してしまってるので違いますね・・・。
2度目以降も、見えている範囲には無いだけで管理対象にはなっているので、別に早くなるわけではなさそうです。
Gitで他のリポジトリから一部のファイルのみをcloneする方法 - (DxD)∞
sparse-checkoutでGitのサブディレクトリだけを自動デプロイする | 株式会社グランフェアズ
参考
Cloning only a subdirectory with git - Stack Overflow
git-archive(1)