git submodule
は別のgitリポジトリを本体のgitリポジトリのサブディレクトリとして登録し、特定のcommitを参照するしくみです。
🍣 submoduleの追加手順
プロジェクトに「hexo-amazon-jp-link」をhexo-amazon-jp-linkというディレクトリに追加します。
git submodule add https://github.com/morizyun/hexo-amazon-jp-link.git hexo-amazon-jp-link
tree . ├── hexo-amazon-jp-link │ ├── README.md │ ├── index.js │ └── package.json └── index.html
|
これでbootstrap
ディレクトリがプロジェクトに追加されます。変更は次のようになります。
git diff --cached diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..6e91676 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule hexo-amazon-jp-link] + path = hexo-amazon-jp-link + url = https://github.com/morizyun/hexo-amazon-jp-link.git diff --git a/hexo-amazon-jp-link b/hexo-amazon-jp-link new file mode 160000 index 0000000..29cdf4f --- /dev/null +++ b/hexo-amazon-jp-link @@ -0,0 +1 @@ +Subproject commit 29cdf4fa49682e8a02895b486cead734842e527
|
hexo-amazon-jp-linkのハッシュ29cdf4fa49682e8a02895b486cead734842e527
のコミットがhexo-amazon-jp-linkに登録されたことがわかります。
🎃 submoduleの更新手順
submoduleのブランチを変更するには、まずsubmoduleのディレクトリで対象のブランチ、コミットをチェックアウトする。
cd hexo-amazon-jp-link git checkout xxx
|
submoduleの外側で、submoduleの変更コミットを記録します。
git diff diff --git a/hexo-amazon-jp-link b/hexo-amazon-jp-link index 29cdf4f..ef8bad8 160000 --- a/hexo-amazon-jp-link +++ b/hexo-amazon-jp-link @@ -1 +1 @@ -Subproject commit 29cdf4fa49682e8a02895b486cead734842e5277 +Subproject commit ef8bad89513f800b6644b426bfd326aacd881fde
|
submoduleが29cdf4fa49682e8a02895b486cead734842e5277
の状態から、ef8bad89513f800b6644b426bfd326aacd881fde
に変更されたことがわかります。
🐝 submoduleを本家リポジトリのブランチに追従させる
本家リポジトリのブランチにsubmoduleの状態を追従させるためには、git submodule update
を実施する必要があります。(自動では追従しません)
git checkout yyy
git submodule update
|
🚕 まとめ
git submodule
で追加したディレクトリは外部リポジトリへの参照(リポジトリのURLと、Commitのハッシュ)を記録しています
git submodule
の配下(内側)は操作したときにしか更新されない(本体のgitブランチを変更しても追従しない)
😀 参考リンク
🖥 VULTRおすすめ
「VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!