web-dev-qa-db-ja.com

エラーでgit pullしようとしています:.gitを開くことができません/ FETCH_HEAD:アクセス許可が拒否されました

助けてください、私は自分の端末でこれを実行しようとしています。

asgard@asgard-A7N8X2-0:~/CollegePortal$ git pull
error: cannot open .git/FETCH_HEAD: Permission denied

それから私はこれを試します

asgard@asgard-A7N8X2-0:~/CollegePortal$ Sudo git pull
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

助けてください、私はこの問題を理解していません。

176
Arthur Yakovlev

あなたのユーザはそのディレクトリを変更するためのパーミッションを持っていないので最初のものはうまくいかなかったようです、そしてあなたのrootユーザはそのgitリポジトリにアクセスするための正しいSSHキーを持っていないためです。

あなたが何をしようとしているかによって、リポジトリを別のディレクトリにクローンすること、あるいはあなたのユーザにフルアクセスを与えるために現在のディレクトリをchownすることがより良いかもしれません。

162
abyx

.git/ディレクトリに対する十分な権限があるかどうかを確認してください。書き込み権限があるはずです。次のコマンドで設定できます。

プロジェクトフォルダに移動します。

chown -R youruser:yourgroup .git/
132
René Höhle

グループに許可を与えたい場合は、

Sudo chmod g+w .git -R

私にとっては一番うまくいった。

MacOSの場合

Sudo chmod -R g+w .git 
36
Won Jun Bae

これはUNIXの権限の問題です。リポジトリのクローン作成にSudoを使用しないでください。あなたはrootと同じsshキーを持っていませんし、とにかくrootとして働くべきではありません。 ls -laを実行してファイルに対する許可を見つけ、それらを修正するためにchmod(またはSudo chown)を使用してください。それが役立つことを願っています。

28
Johannes Thoma

この問題に対する答えは、.git/FETCH_HEADが書き込み権限を持っていることを確認してください。

私はWindows上でこの問題を抱えていましたが、書き込み権限を与えることで解決しました。

Unixでは、プロジェクトリポジトリからchmod a+rw .git/FETCH_HEADを実行することができます。

17
pg2286

私の場合はそれ以降はうまくいきます。

rm -f .git/FETCH_HEAD
15
shilovk

このようにしてみてください、

ステップ1:最初にあなたが誰であるかチェックしますか?現在のユーザー名を返します。例:ubuntu

$ whoami 

ステップ2:次に現在のユーザーに権限を設定します。その場合はubuntu

Sudo chown -R ubuntu .git/
12
Always Sunny

私の場合は、.git/FETCH_HEADファイルへの読み取りアクセス権しかありませんでした。プルリクエストを実行するには、 "Sudo chmod g + w .git/FETCH_HEAD"を実行する必要がありました。

11
Jim

私はWindows上で最初の問題(FETCH_HEADパーミッションが拒否されました)を持っていました。

管理者としてGit Bashを実行することで修正しました(右クリック、管理者として実行)。

8
Nicholas Westby

.git/を所有するグループに自分自身を追加していない場合は、そうしてください。

Sudo usermod -a -G $(stat -c '%G' .git) $USER
Sudo chmod g+u .git -R
Sudo chmod g+u .gitignore
su - $USER

これは何をするものです。

  1. どのグループが.git/を所有しているかを調べ、そのグループにユーザーを追加します。
  2. グループメンバーが.git/の所有者と同じ権限を持っていることを確認します。
  3. これが.gitignoreに対して繰り返されます。
  4. ログアウトしてから再度ログインして、グループメンバーシップファイルのアクセス許可を更新します。

.git/を所有しているグループに自分自身を追加したばかりの最近の場合は、.git/FETCH_HEADの間にgit pullに書き込むことができるようになる前に、ログアウトして再度ログインする必要があります。

7
hobs

コマンドを実行して、現在のユーザーにアクセス許可を設定します

$ Sudo chown -R <username> .git/

5
Shivam Kohli

Windows 7を実行していて、この問題が発生したのは、.gitフォルダを隠していたためです。権限は大丈夫だった、それはただ隠されていた。フォルダを表示すると解決しました。

4
jdf

これは私のために働いた:

  1. .gitフォルダを右クリック
  2. 情報をクリックして
  3. ユーザーに権限を設定します
  4. cogアイコンをクリックして、囲まれたアイテムに適用をクリックします。

これ以上のパーミッションはgitのエラーを否定しませんでした。????

3
eonist

このエラーの原因は倍数かもしれませんが、私の場合私はルートでブランチを更新し、それから私が普通のユーザーでそれを更新しようとするとそれは私にエラーを与えます。

両方の解決策を試してみてください

1- Sudo chmod g+w .git -R

うまくいかない場合は、次の解決方法を試してください。問題が解決することを願います。

2 - rm -f .git/FETCH_HEAD
2
Shahbaz

単にあなたのルートフォルダに行き、次のコマンドを実行してください。

chmod a+rw .git/FETCH_HEAD
2

.gitディレクトリの所有者とグループを(最初に.gitの親ディレクトリに移動します)ll .gitで見て、ディレクトリのグループと所有者を見て、Sudo usermod -a -G yourusername groupsofonwnerで所有者のグループにあなたのユーザを追加してからすべてうまくいく。

だから夏に

  1. gitの親ディレクトリに行く

    $cd your path
    
  2. .gitディレクトリのグループオーナーを探す

    $ll .git     
    
  3. そのグループにあなたのユーザーを追加する

    $usermod -a -G yourusername ownergroupofgit
    
  4. この変更によるシステムへのログアウトおよびログインが有効になります。

  5. 楽しめ ;)

2
Yusef Mohamadi

.gitフォルダが隠されていて、その中のすべてのファイルも隠されているときに、この問題が発生しました。再帰的なファイルを更新せずに.gitフォルダのみを非表示にしてください。

2
Oleg Dmitriev

Windows用のgit拡張を使用しているときにこのメッセージが表示されました。私の解決策は単にgit拡張を閉じてから管理者として再び開くことでした

1
Rob Bowman

私の場合、

Sudo chmod ug + wx .git -R

このコマンドは機能します。

0
narwanimonish

私の箱には2つ以上のユーザーアカウントがあるのでこれを得ました。私はユーザーAとしてログインし、ユーザーBのディレクトリにいました。ユーザーAはユーザーBのものに対する許可を持っていませんでした。ファイルシステムで自分が思っていた場所ではないことに気付いたら、このエラーは意味がありました。

0

windowsサーバーで同じ問題が見つかった場合は、管理者権限などの十分な権限でコマンドラインを実行する必要があります。

0
aaron

この問題は、.gitフォルダに十分な権限を与えていない場合に発生します。この問題を解決するために-

  1. 最初に作業ディレクトリに移動します。
  2. このコマンドを入力してください -

    Sudo chmod a + rw .git -R

それが役に立てば幸い..!!

0