🪤

【GitHub】リポジトリの特定ファイルをクローンする方法

2024/04/23に公開

はじめに

GitHubでリポジトリをクローンする際はgitコマンドを使用します。

しかしながら、それだとリポジトリすべてをクローンしてしまうこととなり、ストレージ的にも時間的にももったいないです。

ということで、特定のディレクトリやファイルのみクローンする方法を調査しました。

環境

  • メインOS:Ubuntu 22.04.2 LTS
    ※Windowsでも同様の手順で成功すると思います。

とにかくやってみよう

事前にバージョン管理システムであるSubversionをインストールしておきます。

$ sudo apt install subversion

今回は徳丸浩さんにより開発されたやられサイト「Bad ToDo List」の特定のファイルをクローンしてみましょうか。

https://github.com/ockeghem/badtodo

特定のファイルのみクローンする

クローンする対象ファイルはmaterialsディレクトリ配下のwoman1.pngです。
https://github.com/ockeghem/badtodo/blob/main/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

元のファイルパスは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