WSL を使用するときに、`safe.directory` を追加せずに `git` が `リポジトリで疑わしい所有権を検出しました` と報告するのを修正するにはどうすればよいでしょうか? 質問する

WSL を使用するときに、`safe.directory` を追加せずに `git` が `リポジトリで疑わしい所有権を検出しました` と報告するのを修正するにはどうすればよいでしょうか? 質問する

私はここ数年間、このコンテキストで git を使用してきました。

  • ホスト = 私のラップトップ、Windows。
  • WSL 有効
  • リポジトリは Linux 側に存在します。
  • Linux 側と Windows 側の両方からアクセスします。

Linux 内のファイルには、git-bash次のようにして (//wsl$/共有経由で) アクセスできます。

Git bashからlinxuxにアクセスする

または、WSL bash ターミナルでネイティブに実行します。

wsl bashからLinuxにアクセスする

これらのアクセスはまったく同じディレクトリに送信されます。

エラー

git status現在、Windows 側からリポジトリ内で実行すると、エラーが発生しますfatal: detected dubious ownership in repository at

git-bash のエラー

一方、WSL-Linux では同じディレクトリに対してはそうではありません。

wsl-bash でエラーなし

いつから?

以前は発生しませんでした。この設定を何年も使用してきました。2日前から発生し始めました。

実際、git-bash2 日前に新しいバージョンをインストールしましたが、bash 環境がこれを条件付ける可能性があると思われます。

私は約 100 個のリポジトリを扱っていますが、試したリポジトリ (約 10 個のリポジトリ) すべてで失敗しました。予想どおり、これら 100 個のリポジトリで同じことが発生します。

以前は機能していたが現在は機能していないリポジトリは変更されていないため、どちらでもないユーザー、どちらでもない権限が変更されました。

したがって、「正常」から「不良」への変化はファイルシステム側ではなく、git-bash 側で発生します。

問題

単に でホワイトリストに登録するだけでは不十分ですsafe.directory。舞台裏で何が起こっているのか理解したいのです。なぜ 3 日前ではなく今日起こるのか。「git が何を期待しているのか」を知り、どうすれば修正できるかを知りたいのです。

これまでの調査

ユーザーの意見は正しいようです。Linux 側から見ると:

Linux ID

また、Windows 側では、ハードディスクと一致し、次のようになりますid

ウィンドウ ID

質問

オーナーにgit文句を言わないようにするにはどうすればいいでしょうか?

ベストアンサー1

実際、2 日前に git-bash の新しいバージョンをインストールしましたが、bash 環境がこれを条件付けている可能性があると思われます。

Git Bash を含む Git for Windows の新しいバージョンをインストールされたと理解しています。Git for Windows を含む 2.35.2 および 2.36 以降の新しいバージョンの Git では、ディレクトリの所有権に関してより厳格になっています。https://github.blog/2022-04-18-highlights-from-git-2-36/#より厳格なリポジトリ所有権チェック

Git Bashから使用する場合は、マウントしたgitとしてもWindowsプログラムを使用します。Git for WindowsにはWSLマウントの権限を処理するための特別なコードがないため、エラーが発生します。cd//wsl$/Gitソースコードの変更

wsl git別の方法としては、Git Bash で の代わりにを使用することですgit。その場合、Linux 実行可能ファイルが使用されます。

または、あなたが書いたように、リスクがないと判断した場合は、そのセキュリティ機能をバイパスするために使用してください。設定を変更せずにこの警告をバイパスしたい場合は、次のようgit config --global safe.directory '*'にします。-cここで言及する:git -c safe-directory='*' <your sub-command here>

[編集者注: Windows コマンド プロンプトを使用している場合は、アスタリスクに一重引用符を追加しないでください (つまり、git config --global safe.directory *.)]

おすすめ記事