新規にPCを自作しました(3)
Gitで「repository path is not owned by current user」エラーが出たときの対処法

新規にPCを自作しました(3) Gitで「repository path is not owned by current user」エラーが出たときの対処法

どもです。

新しいPCに旧HDDを接続してGitリポジトリを開いた際に、
repository path is not owned by current user
というエラーが出た場合の対処方法を紹介します。

前々回の投稿で、新しくPCを購入したことを書きました。
その際に、HDDを旧PCから引き継いだことを書きました。今回は、この旧PCから引き継いだHDDのファイルにアクセスしようとした際にハマった内容と、解決した方法について記載します。


1. ハマった内容

今回ハマった内容は、gitからクローンしたファイルへのアクセスです。
引き継いだHDDの中にある、旧PCで作業をしていたフォルダでgitコマンドを実行した際に、以下のようなエラーが発生しました。

Could not get HEAD hash.
libgit2 returned: repository path 'E:/Blog/WordPress' is not owned by current user.


エラーダイアログの例

エラーメッセージを読む限りは、移植したフォルダへのアクセス権がない、というものです。

このエラーは、Gitが「他のユーザーが所有しているディレクトリ」で操作を実行したと判断した場合に発生します。旧PCで作成されたリポジトリを新PCへそのまま移植すると、ファイルの所有者情報が一致せず、Gitが安全でない操作とみなしてしまうことが原因です。


2. 解決策

2.1. ダメだったパターン

表示されているダイアログの中に、この問題を解決するためのコマンドとして、以下が記載されていました。

git config --global --add safe.directory 'E:/Blog/WordPress'

しかし私の場合には、このコマンドを実行しても問題は解決されませんでした。(コマンド実行後も、同じダイアログが表示されます。)

2.2. うまくいったパターン(1):安全な設定で解決

コマンドラインから git コマンドを実行して対応してみます。エラーに対処するために、Git が「安全でない操作」とみなさないよう、safe.directory に対象ディレクトリを追加します。ダイアログに表示されたコマンドをそのまま実行せず、以下のように修正して実行しました:

git config --global --add safe.directory E:/Blog/WordPress

ダイアログに表示されたコマンドとの違いは、シングルクオーテーションの有無です。ダイアログに表示されたコマンドでは、設定に追加するディレクトリのパスをシングルクオーテーションで囲まれていましたが、実行したコマンドでは、これを削除しています。

2.3. うまくいったパターン(2):全許可設定での暫定対応

もし (2.2) がうまく動作しない場合、設定ファイルを直接編集して暫定的に対処する方法もあります。手順の一例:

  1. Git の設定画面 → git → 「このユーザの設定を編集(O)」を開く
  2. [safe] セクションに以下を追加する:
    directory = *


.gitconfig に directory = * を追加する

この対応を行うと git コマンドが実行できるようになりました。コマンドで同様の設定を行う場合は以下のようになります:

git config --global --add safe.directory *

ただしこの設定は注意が必要です。directory = * はすべてのディレクトリを「安全」とみなしてしまうため、万が一他人のリポジトリを誤って操作しても警告が出なくなります。一時的な回避策としては有効ですが、恒久的な対策としては推奨できません。可能であれば、最終的には (2.2) のように対象ディレクトリを個別に指定する方法に戻してください。


3. まとめ

今回は、別PCから移植したHDD内の git リポジトリを扱う際に発生した「repository path is not owned by current user」エラーへの対処法を紹介しました。今回紹介したのは私の環境で有効だった手順であり、必ずしも最適・安全な方法を保証するものではありません。実行する際は自己責任でお願いします。

ではっ!