fatal: detected dubious ownership in repository の対処

結論を先に。このエラーは、Gitリポジトリの所有者と、いまgitを実行しているユーザーが違うときに、安全のためGitが操作を止めている状態です。そのパスを安全と認める設定(safe.directory)に追加すれば直ります。

fatal: detected dubious ownership in repository at '/path/to/repo'
To add an exception for this directory, call:
git config --global --add safe.directory /path/to/repo

原因

Git 2.35.2 以降は、リポジトリの所有者と実行ユーザーが一致しないと操作を拒否します。よくあるのは、sudo で作ったディレクトリを一般ユーザーで触る、root所有のボリュームをマウントしている、WindowsやDocker・共有ドライブでファイルの所有者が変わっている、といったケースです。乗っ取り対策の安全機構なので、エラー自体は正しい挙動です。

対処

  1. まず本当に自分のリポジトリか確認する(身に覚えのないパスなら触らない)。問題なければ、エラーメッセージが案内するコマンドをそのまま実行する。
Terminal window
git config --global --add safe.directory /path/to/repo
  1. 所有者そのものを直せるなら、そちらが根本対処。実行ユーザーに揃える。
Terminal window
sudo chown -R "$(id -un):$(id -gn)" /path/to/repo
  1. CIやコンテナなど、毎回パスが変わって面倒な場合は全許可もできる。ただし共有マシンでは安全機構を無効化するので避ける。
Terminal window
git config --global --add safe.directory '*'

まとめ

  • 原因は「リポジトリの所有者 ≠ 実行ユーザー」の安全チェック
  • 自分のリポジトリだと確認してから safe.directory に登録
  • 根本的には chown で所有者を実行ユーザーに揃える
  • '*' の全許可は共有環境では使わない