我正在尝试在github页面上部署octopress。我按照这些说明操作:
http://octopress.org/docs/deploying/github/
这一切都运行良好,直到提交部分,我得到错误:
致命:无法打开'.git / COMMIT_EDITMSG':权限被拒绝
我当然是我的github.io页面的所有者,我之前从未遇到过这个问题。为什么会发生这种情况,更重要的是我该如何解决?
答案 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