git submodule


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 # 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

# submoduleを本家に追従させる
git submodule update

🚕 まとめ

  • git submoduleで追加したディレクトリは外部リポジトリへの参照(リポジトリのURLと、Commitのハッシュ)を記録しています
  • git submoduleの配下(内側)は操作したときにしか更新されない(本体のgitブランチを変更しても追従しない)

😀 参考リンク

🖥 VULTRおすすめ

VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。 最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!

📚 おすすめの書籍