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する方法

宇敷 久里也

宇敷 久里也

WEBプログラマです。WEBに関することは、なんでも興味あります。

cloudpack

cloudpackは、Amazon EC2やAmazon S3をはじめとするAWSの各種プロダクトを利用する際の、導入・設計から運用保守を含んだフルマネージドのサービスを提供し、バックアップや24時間365日の監視/障害対応、技術的な問い合わせに対するサポートなどを行っております。
AWS上のインフラ構築およびAWSを活用したシステム開発など、案件のご相談はcloudpack.jpよりご連絡ください。