概要
GitHubなどのリモートリポジトリにクローンしておらず、ローカルでのみバックアップしていたGitリポジトリのリストアを試みると、アクセス権の問題でリポジトリを利用できないというケースに遭遇しました。その解決方法の忘備録です。
発生環境
OS : Windows 10 Home 64bit
アプリケーション : Source Tree
リポジトリの種類 : Gitローカル (リモートリポジトリは不使用)
目的 : HDD入れ替えに伴う開発環境の復元。
操作 :
- 開発作業用HDD上のローカルのGitリポジトリをディレクトリごとコピーして、バックアップHDD上にローカルのバックアップを作成。
- 新HDDにWindows 10、Source Treeをインストール。
- バックアップHDDをつないで、バックアップHDD→新HDDにディレクトリごとコピーして、ローカルのGitリポジトリのファイルをリストア。
- Source TreeでClone。保存先パスにはリストアした新HDD上のローカルGitリポジトリを指定。この時点ではSource TreeはGitリポジトリを認識している。
- Source Treeで以下のエラーを示すダイアログが表示され、リポジトリを取り込めない。
上記ダイアログの内容は以下のとおり。
'git log'がコード 128 で終了しました:fatal:detected dubious ownership in repository at 'リポジトリのパス' 'リポジトリのパス' is owned by: 'Gitリポジトリに記録されたオーナー識別子' but the current user is: '指定したディレクトリのオーナー識別子' To add an exception for this directory, call: git config --global --add safe.directory リポジトリのパス (リポジトリのパス)
調査
まずはメッセージのとおり
git config --global --add safe.directory
リポジトリのパス を試してみたのですが、効果なし。ちょっとすぐにはわからなかったので、ググってみて見つけたのが以下の記事です。
この記事ではOSなどの書かれていないようですが、症状はこの記事と全く同じに見えます。さらに回答を読み進めると、2022/8/7のhalt9kさんの回答はWindows10での対処法について書かれています。
この回答によるとGitの問題ではなく、Windowsのディレクトリのアクセス権の問題とのこと。
解決した手順
上記調査結果を参考に、結果として自分は以下の手順で解決することができました。
- Gitリポジトリのディレクトリの親ディレクトリを右クリック。
- コンテキストメニューの「プロパティ」を選択。
- プロパティウィンドウの「セキュリティ」タブを選択。
- 「詳細設定」ボタンを押下。
- セキュリティの詳細設定ダイアログが表示されるので、「所有者」を確認しておく。
- 同ダイアログの下部の「継承の無効化」を押下。
- 同ダイアログ上部の「変更」を押下。
- ユーザまたはグループの選択ダイアログの下部の「選択するオブジェクトを~」に、自分のWindowsのアカウント名を入力。
- 「OK」を押下。
- セキュリティの詳細設定ダイアログに戻るので、「所有者」が入力したアカウントに変わっていることを確認。
- Source TreeでGitリポジトリをAddする。
自分はWindowsではSource Treeを使用していますが、gitで生じる問題なので、たぶんCUIのgitでも同様に解決できると思います。
(2023/8/11追記)
ドライブ直下に置いたGitリポジトリでも同様の現象の発生を確認しました。その場合に最も簡単に解決できた方法は以下のとおりです。ドライブ直下だと面倒なので、サブディレクトリに移したほうが楽でした。
- Gitリポジトリを格納するためのディレクトリを適当に作る。
- 作成したディレクトリを右クリックし、上記手順2~6を実施。
- 「OK」を押下してダイアログ2つを閉じる。
- Gitリポジトリのディレクトリを作成したディレクトリに、移動ではなくコピーする。
- Source TreeでコピーしたGitリポジトリをAddする。
0 件のコメント:
コメントを投稿