LoginSignup
4
6

More than 1 year has passed since last update.

Git で "fatal: unsafe repository" エラーが出たときの解消法

Last updated at Posted at 2022-04-22

はじめに

git.exe pull --progress -v --no-rebase "origin"
fatal: unsafe repository ('//192.168.56.xxx/Develop$/repo1' is owned by someone else)
To add an exception for this directory, call:

git config --global --add safe.directory '%(prefix)///192.168.56.xxx/Develop$/repo1'


git did not exit cleanly (exit code 128) (109 ms @ 2022/04/22 12:44:50)

ある日、TortoiseGitでpullしたら上記のようなエラーが出た。どうやら Git for Windows ver2.35.2 から変更されたらしい。

環境

今回の問題解決にはあまり関係ないが紹介しておく。ちょっと特殊。
リモートにあるKVMのゲストOS(Ubuntu)にソースや実行環境(Docker)があり、それをローカルのWindows11からRemote Viewer(Spice)でつなげて、Ubuntu上の Visual Studio Code でソースの編集を行う。
Ubuntu と Windows は Sambaでもつなげていて、ちょっとややこしいGitの操作はWindows上のTortoise Git で行う。

解決方法

上記のエラーメッセージにも書いてあるが、設定ファイルに safe.directory を追加するコマンドを実行すれば完了。ただし注意点があるので記載する。

Windows上で行う

リモートのLinuxではなく、ローカルのWindowsでコマンドを実行する必要がある。

シングルクォーテーションはNG

試したところシングルクォーテーションでは有効にならなかった。ダブルクォーテーションかクォーテーションなしでコマンドを実行する。%(prefix)の部分は何かに置き換えろ、というわけではないので、そのまま打ち込んでOK。

Command Prompt
C:\> git config --global --add safe.directory %(prefix)///192.168.56.xxx/Develop$/repo1
または
C:\> git config --global --add safe.directory "%(prefix)///192.168.56.xxx/Develop$/repo1"

リポジトリが複数ある場合

リポジトリが複数入っている上位ディレクトリを指定することはできない。リポジトリ毎に設定を行わないといけない。

globalな設定ファイルに追記しなくてはならない

コマンドを実行する場合は --globalオプションを必ずつけなければならない。
エディタで設定ファイルに書き込む場合は、C:\Users\ユーザー名\.gitconfig に追記する。各リポジトリの設定ファイル(リポジトリ/.git/config)に追記しても効果はない。

記述例

設定ファイルはこんな感じになっている。

C:\Users\ユーザー名\.gitconfig
[safe]
  directory = %(prefix)///192.168.56.xxx/Develop$/repo1
  directory = "%(prefix)///192.168.56.xxx/Develop$/repo2"
4
6
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
4
6