「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
Git関連のおすすめUdemy講座
Git関連のおすすめ書籍

コメント

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