【Hugo】"ローカルリポジトリを再セットアップする"

Hugoのローカルリポジトリを再セットアップする際にテーマ(git submoduleで追加したもの)が原因で ちょっと手こずったので、その時の備忘録。

やりたかったこと、起きた問題、そしておそらくの原因

  1. ubuntuとwindowsそれぞれにローカルリポジトリを作り、そこからHugoを更新していた
  2. しかしある時Ubuntuから更新ができなくなった(Git pushでエラーが起きるようになった)
  3. Gitがぐちゃぐちゃになってることが原因かなと推測したのでubuntu側のローカルリポジトリをやり直すことに
  4. リモートリポジトリからクローンしてきてローカルサーバーを起動させたが真っ白

UbuntuとWindows2箇所のローカルリポジトリからリモートリポジトリに更新を行っていたため、 gitの整合性がめちゃくちゃになりUbuntuのローカルリポジトリからpushができなくなったんだと思われます。
(雰囲気でgitを使っているためブランチなど分けていない)

一度リモートのきれいなgitを引っ張り直してくればまた動くようになるのではと思ったので、Ubuntuのローカルリポジトリを作り直します。

サブモジュールがうまく読み込めない

リモートからクローンし直してhugo serverでローカルサーバーを立ち上げてみますが、画面は真っ白です。

Hugoで真っ白画面=テーマがうまく適用できていない
なので、テーマを見に行きます。

確認するとテーマ配下に何もファイルがありませんでした。

このサイトは、github-styleというテーマをサブモジュールで引っ張ってきているので
サブモジュールを適用しなおせば直せそうです。

がgit雰囲気で触っているため適当に検索したコマンドを雑に打っても色々エラーが出てうまく行きません。

最終的に以下の手順を踏むことでなんとかなりました。

削除、コミット、再追加

# 1.サブモジュールの削除
git submodule deinit -f 削除したいサブモジュールのパス

# 1-1.削除時に以下のエラーが出た場合
warning: Could not unset core.worktree setting in submodule '削除したいサブモジュール'
# themeの下に空のサブモジュールディレクトリがあるはずなので手動で削除するとエラーが消えます

# 1-2. hugoディレクトリ直下の.gitmodulesを削除
# 私の環境ではサブモジュールが1つしかなかったので手動で消しましたが、
# 複数ある中の1つのモジュールを消したい場合は、コマンドでいい感じにしたほうがいいと思います。

# 2.削除をステージング
git add .

# 3. そしてコミット
git commit -m "サブモジュールの削除"

# 4. テーマディレクトリに移動してサブモジュールを追加し直す
# cdしないとhugoディレクトリ直下にサブモジュールがダウンロードされます!
cd themes
git add submodule "追加したいサブモジュール"

# 5. 追加をコミット
cd ../
git commit -m "サブモジュールを再追加"

# themeディレクトリからルートに戻らないとhugo serverでエラーが起きます

複数のクライアントから更新する場合はブランチを分けるべきみたい

行きあたりばったりで運用しているので、変なトラブルに巻き込まれてしまいました。

今後はブランチを分けてWindowsとUbuntuから更新をかけるようにします。

gitもちゃんと理解しなきゃなぁ。

git