始まりは Visual Studio Code

1K+

VS Code 1K+
![1K+](VS Code-1k.webp)

いつの頃からか、ソース管理のところに 1K+ と表示されるようになって、1,000件を超える保留ファイルが存在しています。

ターミナルで実行させる Hugo Server が最近重いのと関係あるのか?と思って、ネットで原因などをいろいろ調べました。

保留ファイルたくさんの原因

.git が変な場所に出来上がっちゃったから・・・というのがいくつか引っかかりました。
でも、うちの場合は合ってそうですから、たぶん違う。

結果、結局、よく分かりませんでした。

保留ファイルをアップしてみるか

VS Code上で強制的にコミット&プッシュをしてみました。

やらなきゃ良かった。

URLがlocalhostになっているファイルが大量にアップされまして、ホームページ上でリンク切れの嵐。

GitHub

GitHubに入って以前の物に戻すつもりが、戻し方分からず。
GitHubの中では出来ないのかな・・・。

とりあえず、下記手順で戻したいコミットは見付かりました。

  1. プロジェクトを開く
  2. Codeタブを開く(プロジェクト開いたらココだと思う)
  3. ブランチの下にある自分のGit名を選択
  4. コミット一覧が出てくる

参考 上の1~3
GitHub

見付かったけど戻せないもどかしさ。

答え

ネットで調べてアレコレ試して、試行錯誤しましたが、正解だけ書いておきます。
私の場合これで直ったというだけで本当の正解かは分かりません。

VS CodeのターミナルでGitコマンド実行

git log --oneline -n 20
git reset --hard ハッシュ値
git push -f origin master

以下、ちょっと補足。

補足

過去のコミット一覧から戻したいコミットのハッシュ値を取得(git log)

git log --oneline -n 20

コマンド 意味
git log コミット一覧を取得するコマンドです。
--oneline コミット1つにつき1行で出力されます。
-n 20 20個まで出力します。

出てきた一覧の左側にある文字列がハッシュ値になります。

前のコミットに戻す(git reset)

git reset --hard ハッシュ値

コマンド 意味
git reset コミットを戻すコマンドです。
--hard コミット、インデックス、ファイル変更すべてを削除します。(何もなかったことに)
ID9桁 先程調べた戻したいコミットのハッシュ値を入れます。

--hard のところは状況によって、--soft--mixedを利用するようです。
私の場合は複数人での開発でも無いし、元の状態にスッキリ戻せるほうが良かったので--hardを使いました。

<参考>
git resetでどのオプション(hard, mixed, soft)を指定すべきか、シチュエーション別に分けてみる #Git - Qiita

プッシュする(git push)

git push -f origin master

コマンド 意味
git push おなじみのプッシュコマンドです。
-f 履歴の競合などでエラーが出るので、問答無用の強制プッシュをします。
origin master ブランチです。

-fではなく--force-with-leaseというのもあるようです。
ローカル側の履歴がリモート側の履歴よりも新しいときだけ強制プッシュするときに使います。

ホッとした

3つのGitコマンドで元に戻りました。

よく理解していないけど、Gitって便利ですね。

今回は、アップロードが終わったあとにGitHub Actionsが実行されて、必要なファイルがWebサーバーにアップされる・・・というところまでが1セットなので、アクションが終わるまで少し時間がかかりました。 それでも10分程度ですけど。

追記(1K+の理由)

理由が分かりました。

保留になっているのは、publicフォルダの中にあるファイルでした。

hugo server を実行するとローカルサーバーでWeb表示の確認ができます。
このとき、publicフォルダ内のファイルが表示されますが、ローカル用に各種URLが localhost になっています。

Webサーバーにファイルをアップする前に hugo を実行します。
このとき、Webで表示できるよう、各種URLがうちのサイトのURLに切り替わります。

ということで、hugo server実行中はリモートとローカルでURL部分が違っているために保留中ファイルが山のようにでき、アップ前の hugo でURLが揃って保留が消えるという感じでした。

この理屈なら以前から発生していたんですね。
なんで突然気付いたんだろう。というか、これまで気付かなかったんだろう。