🦔

git submoduleってなんぞ???

2021/08/04に公開約1,000字

ざっくり解説

  • リポジトリ内に別のリポジトリ『コミット』を参照したものを追加できる機能
    git clone時に同時にcheckout出来たりする。

  • 別のプロジェクトの内容を丸々参照できるので楽ちんだけどちょっと複雑

主に使いそうなやつ

submodule付きのリポジトリをcloneする時

git clone git@github.com:hogehoge.git --recursive

という様な感じで--recursiveオプションを付ける。

submoduleにupdateがあってそれを適用したい。

git submodule update --init

これで適用できる。

  • 上記でダメな場合があるらしい
git submodule update --recursive

これならいけるらしい(よくわからん)

submoduleを間違って変更してしまった場合の対処

エディタのオート補完機能などで間違ってsubmoduleに

影響が及んでしまうことが結構あると思います。

その時どうやって戻せばいいんだーーーーーーというと、

git reset --hard

間違えて変更を加えてしまったsubmoduleに移動して

上記を叩くことで戻ります(そらそうなんだけど咄嗟に慌てるやつ)

submodule導入済みなんだけどgitでuntracked fileにならずupdateしても更新できない場合

反映させたいsubmoduleのディレクトリで下記のコマンドを叩く

git fetch && git reset --hard origin/master
// ブランチは追いたい所を適切に指定してください

これで再度追うことができるようになる

詳しく解説している記事

https://qiita.com/kinpira/items/3309eb2e5a9a422199e9
https://www.m3tech.blog/entry/git-submodule#git-submodule-チートシート
https://rochefort.hatenablog.com/entry/git_submodule_update_recursive

Discussion

ログインするとコメントできます