githubリポジトリ内のサブディレクトリのみをダウンロードしてくる方法
今回はgithub上に上がっているリポジトリ内のサブディレクトリのみを取得する方法についてまとめたいと思います。
最近参考にしたいコードをローカルにダウンロードしようと思ったのですが、
リポジトリがとても大きかったので欲しいコードだけ持ってこれないか?と思い、
調べたところ、方法があったのでその備忘録になります。
■前準備
まずダウンロードを行うためのディレクトリを作成していきます。
mkdir TestDir #適当なディレクトリ名 cd ./TestDir git init git remote add origin https://hogehoge~~ #リポジトリの設定を行う
■sparsecheckoutを用いてサブディレクトリのみを取得する。
リポジトリ内のサブディレクトリのみを取得するにあたり、
”sparsecheckout”というコマンドを用います。
sparsecheckoutを用いることにより、gitリポジトリの一部のみを取得できるようになります。
※sparseとは"わずかな"という意味だそうです。
まずはsparsecheckoutの設定をtrueにしていきます。
git config core.sparsecheckout true
次に取得したいサブディレクトリをsparse-checkoutに設定していきます。
echo サブディレクトリパス > .git/info/sparse-checkout
ここで、設定するサブディレクトリパスですが、
リポジトリをトップディレクトリとした時のパスを入力すればよいです。
例えば、こちらのリポジトリのsampleのみを取得したい場合には、
https://github.com/Elsammit/ScreenCapture
下記の通りコマンド実行すればOK。
echo sample > .git/info/sparse-checkout
もしくは、
vim .git/info/sparse-checkout
でファイル編集にてサブディレクトリを記載してもOK。
ダウンロードするサブディレクトリは複数選択可能で、
2つ目以降は、
echo サブディレクトリパス >> .git/info/sparse-checkout
とsparse-checkoutに追記する形でコマンド実行すればOK。
※vimでファイル内に追記していくでもOKです。
最後に、
git pull origin main #ブランチ名は適宜変更
を実行してダウンロードすればOK。
■補足
sparse-checkoutでダウンロードするファイルを除外する際には、
vim .git/info/sparse-checkout
としてファイル編集にて、
!サブディレクトリ名
と頭にビックリマークを付与すればOK。