🪤
【GitHub】リポジトリの特定ファイルをクローンする方法
はじめに
GitHubでリポジトリをクローンする際はgitコマンドを使用します。
しかしながら、それだとリポジトリすべてをクローンしてしまうこととなり、ストレージ的にも時間的にももったいないです。
ということで、特定のディレクトリやファイルのみクローンする方法を調査しました。
環境
- メインOS:Ubuntu 22.04.2 LTS
※Windowsでも同様の手順で成功すると思います。
とにかくやってみよう
事前にバージョン管理システムであるSubversionをインストールしておきます。
$ sudo apt install subversion
今回は徳丸浩さんにより開発されたやられサイト「Bad ToDo List」の特定のファイルをクローンしてみましょうか。
特定のファイルのみクローンする
クローンする対象ファイルはmaterialsディレクトリ配下のwoman1.pngです。
それでは、実際にクローンしてみましょうか。
元のファイルパスはhttps://github.com/ockeghem/badtodo/blob/main/materials/woman1.png
ですが、以下のように置換します。
$ svn export https://github.com/ockeghem/badtodo/trunk/materials/woman1.png
できました。lsコマンドで確認してみます。
$ ls
woman1.png
ディレクトリでも試してみましょうか
階層が1つ上のmaterialsディレクトリのみをクローンします。
元のファイルパスはhttps://github.com/ockeghem/badtodo/tree/main/materials
ですが、以下のように置換します。
$ svn export https://github.com/ockeghem/badtodo/trunk/materials
できました。lsコマンドで確認してみます。
$ ls
materials
$ cd materials
~/materials$ ls
badtodo_project.json buy-milk.xml man2.png man4.png scan-pattern.txt woman2.png woman4.png
badtodo_user.json man1.png man3.png man5.png woman1.png woman3.png woman5.png
つまりどういうことだってばよ
ポイントはリポジトリをクローンする際のパスです。
例えばですが、使用例で挙げたパス/blob/main/
や/tree/main/
が/trunk/
に変換されています。
構文として表すと以下のようになります。
$ svn export https://github.com/{リポジトリ}/trunk/{ディレクトリ or ファイル}
この用法を守りつつ、パスに含まれる/blob/main
や/tree/main/
を/trunk/
に置換してsvnコマンドを実行しましょう。
まとめ
この方法を知るまで、筆者自身律儀に全部クローンしてました。。
Discussion