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

问题描述 投票:0回答:17

我正在尝试在 github 页面上部署 octopress。我按照以下说明进行操作:

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

一切都运行良好,直到提交部分,我收到错误:

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

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

github octopress
17个回答
108
投票

我通过删除

.git/COMMIT_EDITMSG
解决了这个问题。奇怪,我知道。


70
投票

这不是来自远程 Git 存储库的错误消息,这是您本地文件的问题。您可能在同一目录中以另一个用户(例如 root)身份使用 git(或 rake),并且它创建了您现在无法覆盖的文件。

只需使用 chown 将文件的所有权更改为当前用户,例如:

chown -R $(whoami) .

19
投票

如果您正在使用该死的 Microsoft Windows,则错误可能是由于您正在“观看”文件资源管理器中的隐藏文件......就是这样!


12
投票

如果您使用的是 Windows 并且遇到任何 Git 权限问题,请确保(本地)存储库的

.git
文件夹 contents 未标记为隐藏

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


5
投票

Windows 用户的另一个解决方案: 如果您使用 YandexDisk - 并且您的 .git 文件夹处于同步状态 - YandexDisk 在同步后设置隐藏和只读属性。 因此,关闭 YandexDisk 并使 .git 文件夹和所有子文件夹和文件不可见且不只读


3
投票

这往往不是权限问题。

当(例如)合并时提示您记录提交消息并且您没有保存并退出文本编辑器而只是退出时,可能会出现这种情况。

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


2
投票

chmod 664
文件
.git/COMMIT_EDITMSG
授予其组写入权限。

在我的情况下,该文件由属于我的开发组的另一位用户拥有。给它组写权限解决了它。

.git
目录应位于存储库的根目录中。

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

chmod 664 COMMIT_EDITMSG 

1
投票

如果您使用 TortoiseGit,您可能已经打开了一个“提交”对话框


1
投票

在我的例子中,原因是当前用户(A)不是

COMMIT_EDITMSG
文件所有者(B),将当前用户更改为B并再次提交。

sudo su B


1
投票

快速说明:

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


1
投票

如果您使用的是Linux。 前往

cd /applicationname/.git
ls -al

您将看到 COMMIT_EDITMSG 文件的用户

进入根目录

sudo su
chown youruser: COMMIT_EDITMSG

一切都准备好了! 希望这有帮助


1
投票

这发生在我身上,因为我不小心将我的存储库文件夹从 Windows 资源管理器属性选项中隐藏,然后取消选中隐藏属性。也许,这些操作使 .git 文件夹文件以某种方式发生了变化。但删除 COMMIT_EDITMSG 文件后来就解决了。


0
投票

我在 Windows 上运行 Visual Studio 和文件资源管理器时遇到了类似的问题。关闭它们解决了问题。


0
投票

我使用的是 Ubuntu Linux。由于某种原因,我的 COMMIT_EDITMSG 文件由 root 用户拥有。我不明白为什么,因为它之前是有效的,而且我毫无问题地承诺了。

-rw-r--r--  1 root      root           21 Απρ   3 23:06 COMMIT_EDITMSG

正如上面其他人所说,您需要将所有权更改为当前用户。就我而言,它是:

sudo chown -R your_user.www-data .git

0
投票

如果您使用的是 Windows,请尝试以下方法之一。

  1. 如果 .git 文件夹被隐藏,则取消隐藏它及其内容

  2. 转到您的 .git 文件夹并删除“COMMIT_EDITMSG”文件


0
投票

如果您使用的是 Windows 并收到此错误: 请按照以下步骤操作:

.git >> [Right Click] >> Properties >> Uncheck Hidden Value >> Apply changes to this and subfolders >> Apply

-1
投票

只需在命令行上运行:chmod 777 -Rf /var/www/html/project-name/.git

© www.soinside.com 2019 - 2024. All rights reserved.