54

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

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

这一切都很好,直到提交部分,我得到错误:

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

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

4

16 回答 16

89

I solved it by deleting .git/COMMIT_EDITMSG. Weird, I know.

于 2014-10-27T21:04:33.983 回答
58

This is not an error message from the remote Git repository, this is a problem with your local files. You probably used git (or rake) as another user (such as root) in this same directory, and it created files which you now can't overwrite.

Simply use chown to change the ownership of the files to your current user, for instance:

chown -R $(whoami) .
于 2013-11-12T01:02:52.530 回答
17

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

于 2014-05-05T13:08:29.707 回答
9

如果您使用的是 Windows 并且遇到任何 Git 权限问题,请确保您的(本地)存储库的.git文件夹内容 未标记为 hidden

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

于 2019-02-26T09:13:28.177 回答
5

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

于 2015-05-15T06:55:48.773 回答
2

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

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

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

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

chmod 664 COMMIT_EDITMSG 
于 2015-11-19T16:57:36.973 回答
2

这往往不是权限问题。

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

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

于 2016-12-13T17:18:22.950 回答
1

就我而言,原因是当前用户(A)不是COMMIT_EDITMSG文件所有者(B),将当前用户更改为 B 并再次提交。 sudo su B

于 2017-10-11T09:43:58.813 回答
1

如果你使用的是 linux。去

cd /applicationname/.git
ls -al

您将看到 COMMIT_EDITMSG 文件的用户

进入根目录

sudo su
chown youruser: COMMIT_EDITMSG

你都准备好了!希望这可以帮助

于 2020-05-26T02:56:33.393 回答
1

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

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

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

于 2021-10-29T16:48:42.873 回答
1

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

于 2016-02-21T06:06:52.857 回答
1

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

于 2022-01-06T11:39:24.657 回答
1

快速说明:

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

于 2018-07-23T01:44:34.143 回答
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
于 2021-04-05T19:12:28.283 回答
0

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

于 2020-03-10T05:37:49.743 回答
-1

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

于 2016-01-15T21:17:09.783 回答