web-dev-qa-db-ja.com

Git:インデックスファイルを開くことができませんでした: "git status"でアクセスが拒否されました。 Bitbucketでホスト

Git statusまたはgit pullのいずれかを実行しようとしたときに、過去2日間この問題が発生しています。リポジトリはBitbucketでホストされています。

これを機能させるためにいくつかのことを試みました(stackoverflowでこれに関連するいくつかの投稿がありますが、機能しませんでした)。

ここに問題があります:

 user @ Host:/ repo/$ git status 
 fatal:index file open failed:Permission denied 
 fatal:git status --porcelain failed 

「git pull」を行う場合:

 user @ Host:/ repo/$ git pull 
 remote:Counting objects:77、done。
 remote:Compressing objects:100%(30/30)、done。
リモート:合計56(デルタ37)、再利用41(デルタ22)
エラー:リポジトリデータベースにオブジェクトを追加するための権限が不十分です.git/objects 
 
致命的:オブジェクトの書き込みに失敗しました
致命的:オブジェクトのアンパックに失敗しました

ローカル権限を再確認したところ、すべて問題ないようです。すべてのファイルへのアクセス権があります。

注:

「Sudo」を使用すると、すべてが正常に機能しているように見えますが、そのデプロイメントマシンにはrootのSSH認証情報がありません。 (エラーで説明されているように)アクセス許可の問題だと思いますが、私が.git /内のファイルを含め、すべてのファイルの所有者である場合はどうなるのでしょうか。

前もって感謝します!

26
demogar

fatal: index file open failed: Permission deniedを実行して同じエラーgit statusを取得し、.git/indexを確認しました

$ ls -al .git/index

驚いたことに、それは

----------  1 Kjuly  staff  768248 Sep  2 11:07 .git/index

なぜ、どのように変化したのか、私にはわかりません。とにかく、許可を644に変更した後

$ chmod 644 .git/index

git statusは機能します。

33
Kjuly

.gitディレクトリとそのファイル/サブディレクトリがユーザーによって所有され、書き込み可能であることを確認します。これは、リポジトリが別のユーザーアカウントで、またはrootユーザーとして(例:Sudoを介して)クローンされたようです。

リポジトリのリモートがホストされている場所は関係ありません。gitstatusはローカルリポジトリにのみアクセスします。

5
knittl

今日、BitBucketで同じ問題が発生しました。これは私のために働いた回避策です:

git remote set-url Origin https://[email protected]/_my_/_repo_.git
git pull
git Push
git remote set-url Origin [email protected]:_my_/_repo_.git
0
Kmeixner