当方は独学でGitを利用している、Git初心者です。
VS Code上でGitを利用し始めたところ、1か月足らずで開発中のプロジェクトフォルダのGitが認識されなくなってしまいました。
解決したのでメモしておきます。
大事なことは、「リポジトリを初期化」ボタンを絶対に押さないことですね。フリではありません。
なお本記事では Bash を使用しています。PowerShell の方は末尾も参考にしてください。
確認したこと
0. 初期化しない
GeminiさんにもChatGPTさんにも、しつこく押すなと言われました。
誤って押さないよう、「ソース管理」タブをいったん閉じました。
GUIだと、こういう破壊的な変更をうっかりやってしまいそうだなと思いました。
1. ターミナルでステータス確認
普段はGUIでGitを使用しているため、ターミナルでも認識されないのかをまず確認しました。
git status
すると、以下のように返ってきました。
fatal: not a git repository (or any of the parent directories): .git
やはりエラーがあります。
VS Codeや拡張機能ではなく、Gitリポジトリ側が原因の可能性が高そうです。
2. .git ディレクトリが存在することを確認
PC標準のエクスプローラーで、プロジェクトフォルダを開きました。
隠しファイルとして、きちんと .git があります。
3. .git ディレクトリの中身を確認
.git の中身が壊れていないか確認するため、.git ディレクトリの中身を確認しました。
ls -la .git
.git の主要ファイルは揃っていそうです。
4. HEAD ファイルの中身を確認(原因)
メタ情報が破損していないか確認するため、ファイルの中身を一つずつ確認します。
HEAD や config あたりが怪しそうです。
なるほど、HEAD がなぜか空になっています。(※画像はイメージです。)
ターミナルで確認しても、やはり空になっていました。
cat .git/HEAD
対応
現在使用しているブランチ名をもとに、HEAD の中身を記載していきます。
ブランチ名は以下で確認できます。
ls .git/refs/heads
私は main ブランチとしていました。
そのため、HEAD に以下を書き込みます。
ref: refs/heads/main
保存したら、認識されるようになったか確認します。
git status
On branch main と表示されました。
成功したようです。
「ソース管理」タブに戻ったところ、GUIでもきちんと表示が戻っています。
まとめ
VS Code上でGitリポジトリが認識されなくなったため、原因の探索と解決を行いました。
原因は .git/HEAD ファイルの破損で、ref 情報を記載することで解決しました。
PowerShell 向け
# ステータス確認
git status
# .git ディレクトリの中身を確認
Get-ChildItem .git -Force
# HEAD ファイルの中身を確認
Get-Content .git\HEAD
# ブランチ名の確認
Get-ChildItem .git\refs\heads -Force
# main ブランチの場合、HEAD を修復
Set-Content -Path .git\HEAD -Value "ref: refs/heads/main" -NoNewline
# 修復後の確認
git status





