【Git】「fatal: not a git repository」と出た時の対処|リポジトリのフォルダにcdしていない

スポンサーリンク
Git
スポンサーリンク

PowerShell で Git のコマンドを打ったら、どれも次のエラーになった。

PS C:\Users\<User>> git fetch origin
fatal: not a git repository (or any of the parent directories): .git
PS C:\Users\<User>> git merge --ff-only origin/claude/article30-folder-compare
fatal: not a git repository (or any of the parent directories): .git
PS C:\Users\<User>> git push origin main
fatal: not a git repository (or any of the parent directories): .git

原因は単純で、Git で管理しているフォルダ(リポジトリ)に移動しないまま、コマンドを打っていた。PowerShell を開いた直後の場所(C:\Users\<User>)で打っていたのが間違いだった。

エラーの意味

英語の部分を訳すと、「Git のリポジトリではない(親フォルダのどこにも .git が無い)」となる。

Git で管理しているフォルダには、.git という隠しフォルダがあり、その中に履歴や設定が入っている。Git のコマンドは、今いるフォルダから親のフォルダへ順にさかのぼって、この .git を探す。最後まで見つからないと、このエラーになる。

対処: リポジトリのフォルダに移動してから打つ

Git で管理しているフォルダに cd で移動してから、同じコマンドを打ち直す。

cd D:\labo\claudecode\blog-create
git fetch origin
git merge --ff-only origin/claude/article30-folder-compare
git push origin main

私はこれで、3つとも普通に通った。行の先頭のプロンプト(PS C:\Users\<User>> の部分)が、移動したフォルダ(PS D:\labo\claudecode\blog-create>)に変わっていることを確かめてから打つと間違えにくい。

今いる場所がリポジトリかどうか確かめる

git status を打てば分かる。リポジトリの中なら今の状態が表示され、外なら同じ fatal: not a git repository が出る。

git status

ほかに考えられる原因

私が当たったのは「フォルダに移動していなかった」だけだが、同じエラーはほかの原因でも出る。私は試していないので、当てはまりそうなものから確認してほしい。

  • そもそも Git で管理していないフォルダ: ZIP でダウンロードして展開したフォルダなどには .git が無い。git clone で取ってきたものか、git init したものでないと、Git のコマンドは使えない。Stable Diffusion web UI のように、ZIP で入れたあとに更新のつもりで git pull すると、このエラーになる
  • VS Code のターミナルが別のフォルダで開いている: VS Code で開いているフォルダと、ターミナルの今いる場所が違うことがある。ターミナルのプロンプトで今の場所を確かめる
  • .git フォルダを消してしまった: 隠しフォルダなので、整理のつもりで消してしまうと、そのフォルダは Git の管理から外れる

この記事のまとめ

この記事のまとめ
  • 「fatal: not a git repository」は、今いる場所とその親のどこにも .git が無いという意味
  • 多くは、リポジトリのフォルダに cd していないだけ。移動してから打ち直す
  • 今いる場所がリポジトリかは git status で確かめられる
  • ZIP で入れたフォルダなど、そもそも Git で管理していない場合もある

関連記事

コメント

タイトルとURLをコピーしました