247

リモートサーバーでは、リポジトリのgitチェックアウトを行うために受信後フックを設定しています。

#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f

しかし、ローカルマシンからサーバーのgitリポジトリにプッシュすると、次のエラーメッセージが表示されます。

remote: error: unable to unlink old '<file>' (Permission denied)

これは何度も表示され、ほとんどすべてのファイルに1つのエラーメッセージが表示されます。

ただし、gitを使用して変更できるREADME.txtファイルがあります。そのアクセス許可は次のとおりです。

-rw-r--r--  1 <serverusername>  <serverusername>  2939 Aug  2 10:58 README.txt

しかし、まったく同じ所有者と同じ権限を持つ他のファイルは、私にそのエラーを与えます。

別のWebサイトの別のローカルリポジトリに、ローカルマシンのユーザー名が所有者であるファイルがあり、リモートサーバーにプッシュすると、ファイルのリモートサーバーの所有者が尊重され、チャームのように機能します。

明らかに、アクセス許可に関連するエラーのようですが、修正する方法が見つかりません。何か提案はありますか?

4

15 に答える 15

405

ファイルのリンクを解除する必要がある場合は、ディレクトリに対して権限「w」が必要です。このディレクトリには、ファイルではなく、ファイルがあります。

于 2012-08-02T09:14:46.243 に答える
89
sudo chmod -R ug+w .;

このコマンドで問題が解決します。フォルダへの書き込み権限を付与します。

于 2016-01-04T09:32:35.003 に答える
47

IDEを使用している場合、問題はファイルが何らかのプロセスで使用されたことです。あなたのTomcatがファイルを使用しているように。その特定のプロセスを特定して閉じてみてください。それはあなたの問題を解決するはずです。

于 2015-10-16T21:44:18.840 に答える
31

フォルダの所有権に問題があると思うので、現在のユーザー所有権に設定してください

sudo chown -R your_login_name /path/to/folder
あなたは解決策を見つけることができます[ここ][1]
于 2017-10-29T17:56:06.500 に答える
20
sudo chown -R $USER:$USER .

私のために仕事をしました。

于 2020-04-09T02:46:32.807 に答える
14

私は同じ問題を抱えていましたが、上記の解決策はどれもうまくいきませんでした。問題のあるフォルダを削除しました。それで:

git reset --hard

残りのファイルを削除してgitステータスをクリーンアップしてから、次の手順を実行しました。

git pull

それはついに機能しました。

注:フォルダが、たとえば、ビルドファイルを含むパブリックフォルダであった場合は、ファイルを再構築することを忘れないでください

于 2018-01-16T15:42:37.603 に答える
9

FWIW-私は同様の問題を抱えていましたが、これが(パーミッションmodを超えて)それを軽減したかどうかはわかりません:この問題でブランチを使用していたEclipseを閉じます。

于 2014-11-15T21:35:59.223 に答える
8

これは古い質問ですが、これはMacユーザーに役立つ可能性があります。

Time Machineからファイルを手動でコピーする場合、Time Machineを介してファイルを復元する代わりに、すべてにACLが追加されるため、アクセス許可が台無しになる可能性があります。

たとえば、この記事の「Mac OS Xファイルのアクセス許可を修正する方法」というセクションには、「全員」がカスタムアクセス許可を持っていることが示されています。

不正な権限、http://dreamlight.com/how-to-fix-mac-os-x-file-permissionsから

これらのディレクトリ/ファイルからACLを削除する必要があります。このスーパーユーザーの回答が含まれていますが、コマンドは次のとおりです。

sudo chmod -RN .

次に、ディレクトリとファイルに適切な権限があることを確認できます。私750はディレクトリと644ファイルに使用します。

于 2016-05-11T15:49:37.137 に答える
4
git reset --hard

私のために働いた

于 2017-10-24T19:40:57.900 に答える
3

サーバーを(Intellijで)実行していると、このエラーやその他の奇妙なgitエラーが発生します。サーバーを停止してgitコマンドを再試行すると、頻繁に修正されます。

于 2017-07-28T12:58:10.900 に答える
3

一部のファイルは書き込み保護されており、gitでも上書きできません。書き込みを許可するようにフォルダーのアクセス許可を変更します(例:sudo chmod 775 foldername)

そして、実行します

git pull 

また

于 2018-03-09T04:47:33.463 に答える
3

フォルダの許可を確認したところ、744で問題ありません。WordPressサイトにインストールされているプラ​​グインに問題がありました。私が疑ったトウモロコシの仕事にあるプラグインがフックされました。

シンプルでsudo it can fix the issue

sudo git pull origin master

あなたはそれを機能させています。

于 2020-09-06T07:03:45.373 に答える
2

また、ルートディレクトリ自体の権限を確認することを忘れないでください!

あなたは見つけるかもしれません:

drwxr-xr-x  9 not-you www-data  4096 Aug  8 16:36 ./
-rw-r--r--  1     you www-data  3012 Aug  8 16:36 README.txt
-rw-r--r--  1     you www-data  3012 Aug  8 16:36 UPDATE.txt

「許可が拒否されました」というエラーが表示されます。

于 2016-08-08T14:41:27.930 に答える
2

引っ張ると局所的な変化が生じた可能性があります。

追跡されていないファイルを追加します。

gitadd。

スタッシュの変更。

git stash

ローカルの変更を削除します。

git stash drop

sudoの許可を得てプル

sudo git pull remote branch

于 2019-05-13T19:15:41.707 に答える
0

私は贈り物を持って来ます

sudo chown -R $USER:$USER 
于 2021-11-10T21:57:44.873 に答える