share facebook facebook twitter menu hatena pocket slack

2017.07.24 MON

Gitで特定のディレクトリだけcloneする方法

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 = origin
merge = refs/heads/master

こんな感じで書いてある箇所があるので、このケースであればmasterと書いてある箇所を書き換えれば良い。
こんなことをしなくても

git branch --set-upstream-to=origin/ブランチ名 ブランチ名

これでブランチが追加される。

それでもbranchが表示されないかもしれないですが、
git checkoutブランチ名でいけると思います。
そしてgit pull!!

 参考サイト

元記事こちら

Gitで特定のディレクトリだけcloneする方法