No Programming, No Life

プログラミング関連の話題や雑記

Gitではワーキングツリーを入れ子にできるようです

はじめに

Gitは.gitフォルダにてメタデータをすべて取り扱うため、タイトルのように、ワーキングツリーを入れ子にできるのかな?と思って実験してみたらできたのでこの記事を書いています。

図にするとこんな感じ *1

f:id:fumokmm:20101025020151p:image
一つめのワーキングツリーが青色のところだとして、さらに二つ目のワーキングツリーが一つ目のワーキングツリーの内部のどこか(図では赤色のところ)にあるような構造となります。

動き

  • 入れ子のワーキングツリー(赤色)内部のどこかでGitコマンドを使うと、入れ子のワーキングツリーのルート部分の.gitが利用されます
  • 親のワーキングツリー(青色)のどこかでGitコマンドを使うと、親のワーキングツリーのルート部分の.gitが利用されます
  • 入れ子のワーキングツリーでファイルを編集してコミットした場合でも、親のワーキングツリーではまだコミットされていない状態であるので別途コミットする必要あり。

で、何が嬉しいの?

  • あるリポジトリの中でとあるディレクトリだけはさらに別にバージョン管理したいなんて時に便利かも。
  • それ以上の具体的に嬉しさがなかなか思い浮かばないが…きっとなにか利用法があるはず!

*1:図が汚くてごめんなさい