致命错误:无法打开“.git/COMMIT_EDITMSG”:权限被拒绝。

67

我正在尝试在GitHub Pages上部署Octopress。我按照这些指示进行操作:

http://octopress.org/docs/deploying/github/

一切都进行得很顺利,直到提交部分,出现了以下错误:

fatal: could not open '.git/COMMIT_EDITMSG': Permission denied

我当然是我的github.io页面的所有者,之前从未遇到过此问题。为什么会发生这种情况,更重要的是如何解决?


1
你是C#用户吗?或者有双系统安装Windows和Linux吗? - Yar
10
我将.git文件夹设置为可见后,问题得到了解决,原来它是隐藏的 :-) - ako
18个回答

111

我通过删除.git/COMMIT_EDITMSG文件来解决了这个问题。很奇怪,我知道。


一样的问题,但这种情况偶尔会发生,我不得不进去将.git文件夹及其所有子文件夹设置为可写(取消只读)。 - theannouncer
1
我也试过了,有效。 - CodeSlave
我也试过了,有效。 - Larsen

71

这不是来自远程Git仓库的错误信息,而是你本地文件的问题。你可能曾在相同目录下使用git(或rake)作为另一个用户(比如root),并创建了一些无法被覆盖的文件。

只需使用chown命令将这些文件的所有权更改为当前用户即可,例如:

chown -R $(whoami) .

5
太好了!谢谢。对于 Mac,可以这样做:"sudo chown -R $(whoami) ." - Brian Rizo
"id -nu"或者"whoami"可能是更好的选择,确实不确定每个"chown"命令都接受数字用户ID。 - remram
您真是太棒了。我总是在将Rails项目从一个Ubuntu系统移动到另一个系统时遇到困难,浪费了几个小时甚至整整一天的时间,最终勉强解决了问题。但今天,我终于明白了应该怎么做才能彻底解决所有项目和包含所有项目的目录中的问题。非常感谢您! - user5084534
1
在 macOS 上,它是 chown -R $(whoami) . - Pavan Jadda
谢谢,已更新。确实,长选项可能是GNU独有的。 - remram

19

如果你正在使用微软的Windows系统,可能是因为在文件资源管理器中“查看”了隐藏文件才导致了错误。


2
设置一个血腥的Windows机器来测试一些代码,浪费了大量精力在这类事情上。为什么,为什么,我不得不问,他们那么多开发人员,为什么不能让事情直接开箱即用呢? - Eduardo in Norway
3
这是我的问题。我必须实际停止显示隐藏文件,仅关闭文件资源管理器是无效的。 - VSO
我只是设置了显示隐藏文件,它导致了相同的问题 xD。 - z48o0

13

如果您使用的是Windows,并且遇到了任何Git权限问题,请确保您(本地)存储库的.git文件夹没有被标记为隐藏

您可以隐藏目录本身,但不能隐藏其内容(文件、子目录)。


5

对于Windows用户,还有另一种解决方案:

如果您正在使用YandexDisk,并且您的.git文件夹在同步中,YandexDisk会在同步后设置隐藏和只读属性。因此,请关闭YandexDisk,并使.git文件夹及其所有子文件夹和文件不可见并且非只读。


1
我之前的文件都是只读的,因为我是通过光盘刻录和复制它们的。但是,我使用了一些C#代码自动化地移除了所有Git文件的只读属性后,一切都正常了。 - YoniXw

3

这通常不是权限问题。

当合并时需要记录提交信息,并且您没有保存并退出文本编辑器而是直接退出时,可能会发生这种情况。

Git似乎假定仍有人在编辑提交消息,并拒绝覆盖现有文件,因为这会导致意外行为和另一个提交消息的丢失。


2

chmod 664 文件 .git/COMMIT_EDITMSG 可以赋予该文件组写权限。

在我的情况下,该文件被另一个用户拥有,该用户是开发组的一部分。赋予它组写权限解决了问题。

.git 目录应位于您的仓库根目录中。

命令(假设您在 .git 目录中):

chmod 664 COMMIT_EDITMSG 

1
如果您正在使用TortoiseGit,您可能已经打开了提交对话框。

1

快速提示:

如果您将文件设置为隐藏/只读,也可能会发生这种情况。尝试将整个文件夹设置为非隐藏并取消只读。


1
在我的情况下,原因是当前用户(A)不是COMMIT_EDITMSG文件的所有者(B),将当前用户更改为B并重新提交。 sudo su B

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接