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 /内のファイルを含め、すべてのファイルの所有者である場合はどうなるのでしょうか。
前もって感謝します!
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
は機能します。
.gitディレクトリとそのファイル/サブディレクトリがユーザーによって所有され、書き込み可能であることを確認します。これは、リポジトリが別のユーザーアカウントで、またはrootユーザーとして(例:Sudo
を介して)クローンされたようです。
リポジトリのリモートがホストされている場所は関係ありません。gitstatusはローカルリポジトリにのみアクセスします。
今日、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