Githubページにoctopressをデプロイしようとしています。私はこれらの指示に従いました:
http://octopress.org/docs/deploying/github/
エラーが発生するコミット部分まではすべてうまくいきました:
致命的: '.git/COMMIT_EDITMSG'を開けませんでした:許可が拒否されました
私はもちろんgithub.ioページの所有者であり、これまでこの問題は一度もありませんでした。なぜこれが起こっているのか、そしてさらに重要なことはどうやって解決するのか?
これはリモートGitリポジトリからのエラーメッセージではなく、ローカルファイルの問題です。この同じディレクトリでgit(またはrake)を別のユーザー(rootなど)として使用したため、上書きできないファイルが作成された可能性があります。
たとえば、chownを使用して、ファイルの所有権を現在のユーザーに変更します。次に例を示します。
chown -R $(whoami) .
.git/COMMIT_EDITMSG
を削除して解決しました。奇妙な、私は知っています。
血なまぐさいMicrosoft Windowsで作業している場合、エラーは、エクスプローラーで隠しファイルを「監視」しているという事実による可能性があります。
windowsユーザー向けの別のソリューション:YandexDiskを使用している場合-およびsyncgitisationの下の.gitフォルダー-YandexDiskは、syncronisationsの後に隠し属性と読み取り専用属性を設定します。したがって、YandexDiskをオフにして、.gitフォルダーとすべてのサブフォルダーとファイルを非表示にせず、読み取り専用にしないでください。
chmod 664
ファイル .git/COMMIT_EDITMSG
は、グループに書き込み許可を与えます。
私の状況では、ファイルは開発グループの一部である別のユーザーが所有していました。グループに書き込み許可を与えることで解決しました。
.git
ディレクトリは、リポジトリのルートにある必要があります。
コマンド(.gitディレクトリにいると仮定):
chmod 664 COMMIT_EDITMSG
これは、権限の問題ではない傾向があります。
この状況は、(たとえば)マージ時にコミットメッセージを記録するように求められ、テキストエディタを保存して終了せず、単に終了したときに発生することがあります。
Gitは、まだコミットメッセージを編集している誰かがいると想定しているようで、既存のファイルの上書きを拒否します。これは、予期しない動作や別のコミットメッセージの損失を引き起こすためです。
Windowsを使用していて、Gitのアクセス許可の問題が発生している場合は、(ローカル)リポジトリの.git
foldercontents非表示としてマークされていない。
ただし、ディレクトリの内容(ファイル、サブディレクトリ)だけでなく、ディレクトリ自体を非表示にすることもできます。
私の場合、理由は現在のユーザー(A)がCOMMIT_EDITMSG
ファイルの所有者(B)、現在のユーザーをBに変更し、再度コミットします。 Sudo su B
TortoiseGitを使用している場合は、コミットダイアログが既に開いている可能性があります
クイックノート:
ファイルを非表示/読み取り専用に設定した場合、これが発生する可能性があります。フォルダ全体を非表示に設定してみて、読み取り専用のチェックを外してください。
コマンドラインで実行するだけです:chmod 777 -Rf /var/www/html/project-name/.git