git submoduleを使ってHugoのテーマを使いこなす

今まではgit submoduleの使い方がよくわからず、とりあえずgit submoduleを削除するという強行手段を取っていましたが、gitを極めよう思いましたので、ここにメモしておきます。

以下の記事を参考しました。ありがとうございます。

Git submodule の基礎





テーマのgitをgit submodule addする

themesに移動してsubmodule addします。

$ git submodule add https://github.com/jpescador/hugo-future-imperfect.git hugo-future-imperfect

git statusで確認してみます。

$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       new file:   .gitmodules
#       new file:   hugo-future-imperfect
#

正直まだよくgitのことがわかっていないので、目視でも確認します。ちゃんと.gitmodulesができています。

git submoduleを使ってHugoのテーマを使いこなす

中身はこんな感じでした。

[submodule "hugo-future-imperfect"]
	path = hugo-future-imperfect
	url = https://github.com/jpescador/hugo-future-imperfect.git

ここでコミットしておきます。

$ git commit -m "Add hugo theme"

git logも見てみる。僕以外の人のコミットを確認できました。

commit 8787adeb8a9fbe232a949268c0d16d8652b9d60f (HEAD -> master)
Author: boku <bokunonikki@bokunonikki.com>
Date:   Tue Apr 24 20:28:16 2018 +0900

    Add hugo theme

commit 020882f6ec3658a873f55d162ba114a7bd9288ae (origin/master, origin/HEAD)
Author: Dudi Levy <4785835+dudil@users.noreply.github.com>
Date:   Tue Feb 27 16:39:14 2018 +0200

    - Add SEO elements to header, i18l friendly (#122)

    - Add Hugo related SEO parameters to example config.toml
    - Add relevant instructions to the README.md file

commit 62b074f4db1e5170f25d77d0c03181c94e6c1018
Author: Dan Ovando <DanOvando@users.noreply.github.com>
Date:   Sat Feb 24 20:19:58 2018 -0800

    Add capability for mathjax equations per instructions here (#126)

    https://bookdown.org/yihui/blogdown/templates.html





テーマのコミットを親のコミットにgit submodule updateする

Hugoを作ったばかりでgitが無かったので、自分のサイト直下でgit initします。

試しに親からsubmoduleのログをみてまます。

やり方はgit log --patch --submodule=log -- themes/hugo-future-imperfectです。

blog boku$ git log --patch --submodule=log -- themes/hugo-future-imperfect
fatal: your current branch 'master' does not have any commits yet

当然の事ながら何もありませんでした。要するにこのテーマのコミットを親のgitに反映させたいわけです。

submoduleをちょっと編集して、コミットします。

hugo-future-imperfect boku$ git add -A
hugo-future-imperfect boku$ git commit -m "submodule2"
[master 83a1f9a] submodule2
 1 file changed, 2 deletions(-)

ここで確認の意味も込めて親に移動してlogを確認します。

blog boku$ git log --patch --submodule=log -- themes/hugo-future-imperfect
commit 8a1f6c02905a8e25e6c72317f58e3835db1722b6 (HEAD -> master)
Author: boku <bokunonikki@bokunonikki.com>
Date:   Tue Apr 24 21:28:47 2018 +0900

    submodule

Submodule themes/hugo-future-imperfect 0000000...8787ade (new submodule)

submoduleでコミットしただけでは親に反映されていないようです。親に反映させるためにgit submodule updateを実行します。

hugo-future-imperfect boku$ git submodule update

git submodule updateがきんとできた確認します。親でもコミットしないとsubmoduleはコミットされません。

blog boku$ git add -A
blog boku$ git commit -m "kakunin"
[master 8066143] kakunin
 1 file changed, 1 insertion(+), 1 deletion(-)

 blog boku$ git log --patch --submodule=log -- themes/hugo-future-imperfect
 commit 8066143b867245fd23f47241e80cc7fe5a3f7839 (HEAD -> master)
 Author: boku <bokunonikki@bokunonikki.com>
 Date:   Tue Apr 24 22:04:26 2018 +0900

     kakunin

 Submodule themes/hugo-future-imperfect 8787ade..bc008bc:
   > submodule2
   > submodule2
   > kokoha

 commit 8a1f6c02905a8e25e6c72317f58e3835db1722b6
 Author: boku <bokunonikki@bokunonikki.com>
 Date:   Tue Apr 24 21:28:47 2018 +0900

     submodule

 Submodule themes/hugo-future-imperfect 0000000...8787ade (new submodule)

何度か間違えたので、変なコミットも混じってますが、きちんと親にも反映させることができました。

これで、テーマのコミット変にいじることなく華麗に使いこなせるはずです。

See Also