LoginSignup
1
1

More than 3 years have passed since last update.

プロジェクトの中にプロジェクトを入れてそれをgitで管理したい!

Posted at

注釈

やりたいことはタイトル通りなのですが書く事柄はgit submoduleです。
探しても探してもプロジェクトの中にプロジェクト入れてそれのサブモジュールどうやってるの?
となり続けて3日ほどかけたので備忘録として。私自身も見返したいですし。
というか実質自分の見返し用です。

これやってー

相手「今あるプロジェクトに機能を追加したいのでよろしくぅ!
あ、ついでに楽に管理したいからサブモジュールとかその辺のなんかいいの使ってね!」

私「(gitを使い始めての1月ぐらいの私に頼むとか正気か…?)わからないことがあったら聞きますね!」

プロジェクト構造どうなってます?

treeコマンドっていうのがあるんですね…
階層手書きしたくないなぁって思ってた私にはまさにありがたみしかないです。

取り敢えずとしてこんな階層のプロジェクトがあったとします。

C:\>tree project /f
C:\PROJECT
│  1.txt
│  2.txt
│  3.txt
│  4.txt
│  5.txt
│
└─Patch
    ├─SubProject
    ├─SubProject2
    ├─SubProject3
    ├─SubProject4
    └─SubProject5

このPatch直下にどんどんとサブプロジェクトが増えていくわけです。

今までの管理

そもそも今までの管理方法は?というと

今まではこんな感じでした

C:\>tree project /f
C:\PROJECT
│  1.txt
│  2.txt
│  3.txt
│  4.txt
│  5.txt
│  .git
│
└─Patch
    ├─SubProject
    ├─SubProject2
    ├─SubProject3
    ├─SubProject4
    └─SubProject5

大本プロジェクトのみgitで管理している状態です。

パッチ修正とかがあるたびに一気にコミットした瞬間のファイルが増えるし
一部回収なのに大元で管理とかばかばかしいと思いません?
後はほかの人が作ったパッチも入れたい!というとき毎回クローンしなければいけないですし、色々現実的じゃないですよねー…。

というわけでsubmoduleさんの力を借りましょう

まずは、SubProjectを入れたい位置へ行きます。
移動したらサブモジュールとしてプロジェクトを追加します。

C:\>cd Project\Patch
C:\Project\Patch>git submodule add [FILEPATH]

上記でカレントディレクトリにプロジェクトがサブモジュールとして追加されます。
複数ある場合はこのままのカレントディレクトリでgit submodule addで次々と追加していけます。

ファイル数は一つなんですけども…

今現在追加するサブモジュールが一つの場合わざわざ移動はしなくてもそのまま指定してしまいましょう。

git submodule add [FILEPATH] foo/PluginFolderName

プラグイン名指定なしで階層だけ指定して作りたいんですけど今のところないみたいですのでこのようになります。

C:\Project>git status
On branch master
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .gitmodules
        Patch/

nothing added to commit but untracked files present (use "git add" to track)

.gitsubmoduleとPatch/
もしくは
.gitsubmoduleと追加したサブモジュールパス

Untracked files:
に存在すればサブモジュールの追加としては終了です。

これでサブモジュールとして管理されるようになったので
プロジェクトの中にプロジェクトに入っていてそれが親プロジェクトで管理されている状態が完成しました!!

参考

Gitのサブモジュール機能を使ってプロジェクトを管理してみよう -

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1