gitで複数のプロジェクトファイルを管理していた場合などに、特定のディレクトリ配下だけcloneしたい場合などあると思います。そんな時に便利なgitの使い方があったので紹介します。
git cloneする
git clone リポジトリのURL
※既存でgitリポジトリがある場合スキップ
configを編集する
.gitのあるディレクトリに移動して
git config core.sparsecheckout true
このコマンドを実行することで
.git/configのファイルにsparsecheckout = true
が追加される。
checkoutしたいディレクトリを指定
.git/info/の配下にsparse-checkoutというファイルを追加する。
vi .git/info/sparse-checkout
checkoutしたいディレクトリのパスを記述する。
ちなみに!パス
とすることで除外することもできるようです。
例)sparse-checkout
/html !/html/css
こんな感じのはず。
設定をリポジトリに反映させる
git read-tree -m -u HEAD
これで指定したディレクトリのみがリポジトリにある状態になったかと思います。
普通にgit pull
するだけでもいけそうな気がする
補足
branchを変更したい場合
複数branchがあったとして、git branch
をしてもgit read-tree -m -u HEAD
を実行した時のbranchしか表示されない。
なので.git/configからbranchを書き換える必要がある。
[branch “master”]remote = originmerge = refs/heads/master
こんな感じで書いてある箇所があるので、このケースであればmasterと書いてある箇所を書き換えれば良い。
こんなことをしなくても
git branch --set-upstream-to=origin/ブランチ名 ブランチ名
これでブランチが追加される。
それでもbranchが表示されないかもしれないですが、git checkoutブランチ名
でいけると思います。
そしてgit pull
!!
参考サイト
- Git 特定のフォルダのみcloneする
- git sparse checkout で一部のサブディレクトリだけを clone せずに pull/checkout する
- Gitで他のリポジトリから一部のファイルのみをcloneする方法