検証環境

  • Windows 10 Pro 64bit (21H2)
  • Git for Windows 2.38.1
  • TortoiseGit 2.13.0.1

問題

TortoiseGitで「fatal: detected dubious ownership in repository」のエラーが出る

これは、そのローカルリポジトリのフォルダの所有者が自分では無い(ログインした時のユーザーでは無い)場合に起きる模様
Gitの脆弱性に対してのセキュリティー対策らしい

ちなみに、このダイアログをアクティブにした状態で[Ctrl]+[C]キーを押すと、ダイアログの内容がテキストとしてコピー出来る
一番下の行が後記の解決法①で使えるので、これ知ってると楽

解決法

解決法としては2つあるが、基本は「解決法①」で解決した方が良い
「解決法②」は注意が必要(やるフォルダによっては間違えるとOS環境ぶっ壊す可能性がある)

解決法①Gitに「このフォルダは安全」と分からせる

以下の例は、ローカルリポジトリのフォルダが「D:\test」だったとして

以下のコマンドを、Powershellで実行する
コマンドプロンプト(DOSプロンプト)では駄目です

「D:¥test」のフォルダを安全なフォルダとして登録する

git config --global --add safe.directory D:/test

又は

git config --global --add safe.directory 'D:/test'

設定された内容を見る

git config --global -l

安全なフォルダの設定から「D:¥test」フォルダを外す

git config --global --unset-all safe.directory D:/test

又は

git config --global --unset-all safe.directory 'D:/test'

以下はこの3つのコマンドを使ってみた例のスクリーンショットです

注意点としては

フォルダパスのパス区切りの文字はWindows基準の「¥(\)」(円記号やバックスラッシュ)では無く、Linux基準の「/」(スラッシュ)を使う

大文字・小文字は区別される
例えば「D:/test」と「D:/TEST」は区別される

フォルダパスの一番後ろには、パス区切り記号は付けない
例えば「D:/test/」は駄目で「D:/test」とする

解決法②ローカルリポジトリのフォルダの所有権を自分にする

そのフォルダ全てが自分で掘ったフォルダだと分かっている場合、そのフォルダの所有者を自分にする…という手もある

だがこちらの方法は、やるフォルダによっては間違えるとOS環境ぶっ壊す可能性があるので、意味が分からない人はこの方法をやらない方が良い

特殊なフォルダ…例えば「OSが作ったフォルダ」「NAS」「クラウドストレージ」「WSL上の仮想ディレクトリ」…等などのフォルダ下にある場合、所有者を変えると他に影響する恐れがあるので、この方法をやらない方が良い

ローカルリポジトリのフォルダを右クリック→「プロパティ」

「セキュリティ」タブ→「詳細設定」ボタン

「所有者」の「変更」リンクを選択

自分のユーザーID(ログオンID)を入力→「名前を確認」ボタン→エラーダイアログが出なかったら「OK」ボタン
※「名前を確認」でエラーダイアログが出る場合、入れたユーザーIDが間違ってます

「サブコンテナーとオブジェクトの所有者を置き換える」にチェックが入っているか確認→「OK」ボタン

何故私の環境でこのエラーが出たか

ローカルリポジトリのフォルダの所有者が「Administrator」になっていた

何故そうなったのかは、以下予想でしかないが
古いPCから新しいPCへ環境を移行する際、ローカルリポジトリのフォルダのコピーを「Administrator」のユーザーで行い、そのせいで所有者が「Administrator」になってしまったんだと思われる

参考Webページ