# Submoduleの使い方
## GitSubmoduleとは
Gitリポジトリ内に別のGitリポジトリをサブモジュールとして入れることができる機能。
例えば、あるプロジェクト内で他のプロジェクトを依存関係として管理する場合などに使用。
他のリポジトリで管理しているライブラリをプロジェクトのリポジトリ内で使用したいなど
## Submoduleの追加方法
`submodule`コマンドと追加したいリポジトリのURLで追加
submoduleはコミットのハッシュ値で管理されるため,変更履歴としてハッシュ値の変更が残る
そのため,ハッシュ値を追加したということをコミットする必要がある
```bash
$ git submodule add
$ git add .
$ git commit -m "feat: add repo as submodule"
```
## Submoduleの更新方法
submoduleのリポジトリ側で更新があった場合,`update`コマンドで更新する必要がある
```bash
$ git submodule update --remote
```
## Submoduleの編集
submoduleのリポジトリを編集するとき,リポジトリのフォルダ内を編集する
コミットするときは,submoduleのリポジトリ内で行う必要がある
更新後は,大元のリポジトリでsubmoduleの更新が必要
```bash
# subAというsubmoduleがあったとき
$ cd subA
$ git commit -am "feat: xxx"
$ git push
$ cd ../
$ git submodule update --remote
```