エラーでgit pullを試みます:.git / FETCH_HEADを開けません:権限が拒否されました


209

私の端末でこれを実行しようとしています:

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

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


公開鍵をgithubアカウントに追加しましたか?
madhead

3
プルしようとするローカルディレクトリとファイルに対する書き込み権限がありますか?また、sudosshキー(ルートではない)にアクセスする必要があるため、おそらくここではまったく役に立ちません。
Benjamin Bannier

私はこの問題を抱えており、ユーザーにそのフォルダーへの変更とフルアクセスのアクセス許可を与えることで解決しました(Windows)
Frank

回答:


193

1つ目は、ユーザーがそのディレクトリを変更する権限を持っていないため機能していないようです。2つ目は、rootユーザーがgitリポジトリにアクセスするための適切なSSHキーを持っていないためです。

何をしようとしているかに応じて、リポジトリを別のディレクトリ、またはchown現在のディレクトリにクローンして、ユーザーが完全にアクセスできるようにした方がよい場合があります。


同様の問題に直面しておりwww-data.gitディレクトリを更新する権限をユーザーに与えることができるかどうかわかりません。ブラウザでhttpを介してphpを使用してシェルスクリプトを呼び出しています。詳細はこちら
KillABug 2015

13
これは、誤って実行sudo suしたことを忘れ、リポジトリでrootとして活動しているときによく起こります。sudo chown -R <username> .そのディレクトリのシンプルなものが魔法のように動作します!
レイ

149

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

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

chown -R youruser:yourgroup .git/

1
これは私に与えるchown: youruser: Invalid argument
ザクダンス2013年

43
それはする必要がありますchown -R youruser .git/
2013

1
それが機能するためには、私chown .git/とその親フォルダが必要でした
zadubz

これは非常に一般的な問題のようです..別のユーザーと、別のユーザーの何かで作業している場合は、権限を少しトリッキーに変更しました。
ルネHöhle

機能してchownいない場合 は、このコマンドも実行するsudo chmod 0777 -R .git/
キラン

48

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

sudo chmod g+w .git -R

私にとって最も効果的でした。

MacOSの場合

sudo chmod -R g+w .git 

29

これはUNIX権限の問題です。sudoリポジトリのクローンには使用しないでください。rootと同じsshキーがないため、とにかくrootで作業するべきではありません。試してみてくださいls -la、ファイルや使用上の権限を見つけるためにchmod(またはsudo chown)それらを修正します。お役に立てば幸いです。


まさにこれ!この問題に遭遇したのはsudo clone、XCodeの新しいライセンス契約を受け入れるためにそうしなければならなかったからです。答えは、合意に同意し、sudoなしで複製することです。
Barnaby


21

この問題の答えは、.git / FETCH_HEADに書き込み権限があり、すべて設定されていることを確認することです。

Windowsでこの問題が発生しましたが、書き込み権限を付与することで解決しました。

UNIXではchmod a+rw .git/FETCH_HEAD、プロジェクトリポジトリから実行でき、その後は機能します。


.git/FETCH_HEAD許可の問題がオンの場合、は単独では機能しません.git
・クール

17

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

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

$ whoami 

ステップ2:あなたの現在のユーザーに続いてセットの許可、その場合には、Ubuntuのことで

sudo chown -R ubuntu .git/

Ubuntuのライトセイル1号Amazonで談話インストールを実行しながら、私のためにこの作品
JIDE

11

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


.git/FETCH_HEAD許可の問題がオンの場合、は単独では機能しません.git
・クール

私はグループのgitフォルダーへの書き込みアクセスを許可する必要がありましたsudo chmod g+w .git/FETCH_HEAD
ウィリアム

sudo chmod g+w .git/FETCH_HEAD、完璧なソリューション。
Rishi Kulshreshtha

9

Windowsで最初の問題(FETCH_HEAD権限が拒否されました)が発生していました。

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


9

を所有するグループに自分を追加していない場合は、追加.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




4

Windows 7を実行しているときにこの問題が発生したのは、.gitフォルダーを非表示にしていたためです。権限は問題なく、単に隠されていました。フォルダを表示することで解決しました。


隠されたディレクトリ、誰がサンクだろう。
Ian Newland


3

これは私のために働きました:

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

gitのエラーを拒否する権限はありません。🎉


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

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


2

このエラーの理由は複数になる可能性がありますが、私の場合、ルートでブランチを更新してから、通常のユーザーで更新しようとすると、エラーが発生します。

あなたのために働くはずの両方の解決策を試してください

1- sudo chmod g+w .git -R

それが機能しない場合は、次の解決策を試してくださいそれがあなたの問題を解決することを願っています

2 - rm -f .git/FETCH_HEAD

1

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



1

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

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

    sudo chmod a + rw .git -R

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


1

まったく同じエラーが発生しましたが、私の場合、問題はPHPバージョンへのアップグレード後にApacheを再構築した結果です。要するに、Apacheモジュール 'suexec'をインストールするのを忘れていました。

それはグループや所有権とは何の関係もありませんでした。それは私が理解するのに2日しかかからなかった、誰かが私を撃った...


1

私の場合、NTFSディスクにプロジェクトフォルダーがあるデュアルブートシステム(Windows 10およびLinux)がありました。別のアップデートでは、設定でWindows 10自体が「高速起動」を有効にしていることがわかりました。Windowsでチェックを外した後、Linuxで「エラー:.git / FETCH_HEADを開けません:権限が拒否されました」が消えていました。


0

私は自分のボックスに複数のユーザーアカウントを持っていたので、これを取得しました。私はユーザーAとしてログインし、ユーザーBのディレクトリにいました。ユーザーAにはユーザーBのものに対する権限がありませんでした。自分がファイルシステムのどこにいるのかわからなくなったとき、このエラーは理にかなっています。


0

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


0

MacOSユーザーの場合(High Sierra以降のバージョンの場合)、これを使用します。

sudo chown -R $(whoami) $(brew --prefix)/*

-1

TL; DR:デュアルブートシステムでは、Windowsの高速スタートアップをオフにする

デュアルブートUbuntu / Windowsシステムでこの問題が発生していました。Windowsと共有されているパーティション(NTFSパーティション)には何も書き込むことができませんでした。

最近両方を再インストールしましたが、Windowsで「高速スタートアップ」を終了するのを忘れていました。Windowsで再起動し、その機能をオフにして再起動した後、すべてが正常に戻りました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.