Gitリポジトリは扱いやすさの面で、基本的に一つのプロジェクトに対して一つのリポジトリにすべきだと思っています。(一つのリポジトリに複数のプロジェクトを入れてしまうと管理がちょっと面倒くさくなる。)
ただ、やむをえない事情で複数のプロジェクトを一つのリポジトリに入れておかないといけない場合が出てくることがあります。(使用できるリポジトリ数に制限がある場合など)
そういう時にGitリポジトリの一部をチェックアウトできると便利ですよね。
今回は、Gitで一部のディレクトリだけをチェックアウトする方法をご紹介します。
今回は、操作はCUI上ですべて行います。
まず、目的のGitローカルリポジトリ内の”.git”が存在するディレクトリがカレントディレクトリになるように移動します。
例:
cd path/to/gitdir #.gitがあるディレクトリに移動 ls -a #ディレクトリの中身を表示
. .. hoge huga .git piyo
次に、下記のコマンドで”.git/info/sparse-checkout”ファイルを作ります。
vi .git/info/sparse-checkout
エディタで下記のように編集します。
/hoge
/hogeのみをチェックアウト
あるいは
!/huga
!/piyo
/huga
/piyo
を除外
というように指定します。
この後、
git read-tree -m -u HEAD
とすると、指定されたディレクトリのみが残ります。
ls -a
. .. hoge .git
こうしておけば、リポジトリが同じでも、自分が触っていないところを誤って変更したり削除してしまったり、ということも防ぐことができて便利です。
お試しあれ。