LoginSignup
1
0

More than 3 years have passed since last update.

環境変数で失敗: Git pullできない(fatal: Not a git repository)

Last updated at Posted at 2019-07-28

コマンドプロンプトでgit pullしようとするとfatal: Not a git repository: 'C:\Program Files\Git\bin'というエラーが出てしまい、何が何だかわからない事態に陥った。git-cmdでは動くからgit自体は問題なさそうなのに、なんでこんなことが起きるのかと思っていたら、「Gitディレクトリ外からgitコマンドを実行する」を読んでようやく理解できた。気付きにくい残念な失敗だったので残しておく。

原因: 意図せず意味のある環境変数"GIT_DIR"を定義していた

Node.jsを実行するコマンドプロンプトを開く際、PATHPYTHONなどの環境変数を設定したかったので、以下のようなバッチファイルを作っていた。その中で、GitのバイナリへのPATHのつもりで環境変数GIT_DIRを定義していた。この環境変数は一時的な用途のつもりだったのだが、悪さをしてしまった。

setting.bat
set NPM_DIR=E:\node\9_5_0\npm_global
set NODE_DIR=E:\node\9_5_0
set GIT_DIR=C:\Program Files\Git\bin ←これが良くなかった
set PYTHON=E:\Python\2_7\python.exe
set PYTHON_DIR=E:\Python\2_7
set PATH=%NODE_DIR%;%NPM_DIR%;%GIT_DIR%;%PYTHON_DIR%;%PATH%

cd /d %~dp0
cmd /K npm config set prefix %NPM_DIR%

環境変数設定画面を開く手間、環境変数が増え過ぎ防止、複数バージョンをインストールすることなどを考慮し、起動用のプロンプトを作っていた。それがこんな悪さをするなんて…

Gitディレクトリ外からgitコマンドを実行する」によると、GIT_DIRはgit pull などを実行する際の.gitの場所を指定するための環境変数ということだった。一時的な環境変数のつもりが、実は意味があって.gitフォルダを指定してしまったことで、「リポジトリじゃない!」と怒られてしまうのだった。(しかもこの環境変数は、-Cオプションより強いため、無効化しないといけなかった)

対処: GIT_DIRの定義を削除(改名)した

環境変数GIT_DIRさえ定義しなければよいので、以下のようにして解決…しょぼい。

setting.bat
set NPM_DIR=E:\node\9_5_0\npm_global
set NODE_DIR=E:\node\9_5_0
set GIT_PATH=C:\Program Files\Git\bin
set PYTHON=E:\Python\2_7\python.exe
set PYTHON_DIR=E:\Python\2_7
set PATH=%NODE_DIR%;%NPM_DIR%;%GIT_PATH%;%PYTHON_DIR%;%PATH%

cd /d %~dp0
cmd /K npm config set prefix %NPM_DIR%

もっと別な名前があるかもしれないが、とりあえず動いたのでこれで良し…

気を付けること

一時的な用途のつもりで作った環境変数でも、誰かにとって意味があるかもしれない。意図せず何かの設定をいじってしまい、不可解なトラブルを起こす可能性がある。環境変数を作るときは、MY_abcとかTMP_xyzのような、まず被らない名前を付けるべきだったと思う。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0