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

时间:2013-11-11 22:18:19

标签: github octopress

我正在尝试在github页面上部署octopress。我按照这些说明操作:

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

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

  

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

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

15 个答案:

答案 0 :(得分:62)

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

答案 1 :(得分:36)

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

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

chown -R $(whoami) .

答案 2 :(得分:13)

如果您正在处理血腥的Microsoft Windows,则错误可能是由于您正在“观察”文件资源管理器中的隐藏文件......这就是它!

答案 3 :(得分:5)

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

答案 4 :(得分:2)

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

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

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

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

chmod 664 COMMIT_EDITMSG 

答案 5 :(得分:2)

这往往不是权限问题。

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

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

答案 6 :(得分:1)

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

答案 7 :(得分:1)

在我的情况下,原因是当前用户(A)不是packages <- c("tidyverse", "qdap", "stringr", "stringi", "textstem", "foreach", "caret", "xgboost", "quanteda") zzz<-lapply(packages, function(xxx) suppressMessages(require(xxx, character.only = TRUE,quietly=TRUE,warn.conflicts = FALSE))) 文件所有者(B),将当前用户更改为B并再次提交。 COMMIT_EDITMSG

答案 8 :(得分:1)

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

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

答案 9 :(得分:0)

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

答案 10 :(得分:0)

快速注释:

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

答案 11 :(得分:0)

当我进行家庭办公时,我正在使用VSCODE和Windows(我不喜欢Windows)。我解决了关闭de VSCODE并执行de git pull的问题

答案 12 :(得分:0)

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

答案 13 :(得分:0)

如果您使用的是Linux。 转到

cd /applicationname/.git
ls -al

您将看到COMMIT_EDITMSG文件的用户

转到根目录

sudo su
chown youruser: COMMIT_EDITMSG

您都准备好了! 希望对您有帮助

答案 14 :(得分: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