» TechAcademyの無料体験

git sparse checkout を使ってリポジトリ内の一部だけ取り込む

git sparse checkout を使ってリポジトリ内の一部だけ取り込むGit

リポジトリAがあって、リポジトリBをサブモジュールとして取り込んでいる場合、リポジトリBの一部だけを利用したいという場面がありました。

この場合、gitにはsparse checkout(スパースチェックアウト)というものがあることを知ったので、sparse checkoutについてまとめてみました。

git sparse checkout を使ってリポジトリ内の一部だけ取り込む

sparse checkout とは

リポジトリの一部だけをcheckoutするgitコマンドです。

sparse checkout を使ってリポジトリ内の一部だけを取り込む

sparse checkout を使ってリポジトリ内の一部だけを取得する方法について。リポジトリAがあり、以下のようなディレクトリ構造だった場合を例にとって説明していきます。

リポジトリA
├─ dirA(サブモジュール)
│     ├─ dirA-1
│     └─ dirA-2
└─ dirB

まずはリポジトリAをclone。サブモジュールを含むリポジトリなのでrecursiveオプションをつけています。

git clone --recursive [リポジトリAのURL]

次に sparse checkout を使って、dirA/dirA-1だけを取り込むようにします。

まず、sparse checkout を有効に。Cオプションは、指定したパス上でgitコマンドを実行してくれます。

git -C dirA config core.sparsecheckout true

.git/modules/dirA/info/sparse-checkout を作成し、取得するdirA-1を指定します。

vi .git/modules/dirA/info/sparse-checkout
dirA-1

その後、dirAのツリー情報を読み込み直してあげると、dirA配下はdirA-1のみ存在するようになっています。mオプションでマージンを実行し、uオプションでツリー内のファイル更新を行っています。

git -C dirA read-tree -mu HEAD

コメント

タイトルとURLをコピーしました