我正在尝试在GitHub Pages上部署Octopress。我按照这些指示进行操作:
http://octopress.org/docs/deploying/github/
一切都进行得很顺利,直到提交部分,出现了以下错误:
fatal: could not open '.git/COMMIT_EDITMSG': Permission denied
我当然是我的github.io页面的所有者,之前从未遇到过此问题。为什么会发生这种情况,更重要的是如何解决?
我正在尝试在GitHub Pages上部署Octopress。我按照这些指示进行操作:
http://octopress.org/docs/deploying/github/
一切都进行得很顺利,直到提交部分,出现了以下错误:
fatal: could not open '.git/COMMIT_EDITMSG': Permission denied
我当然是我的github.io页面的所有者,之前从未遇到过此问题。为什么会发生这种情况,更重要的是如何解决?
我通过删除.git/COMMIT_EDITMSG
文件来解决了这个问题。很奇怪,我知道。
这不是来自远程Git仓库的错误信息,而是你本地文件的问题。你可能曾在相同目录下使用git(或rake)作为另一个用户(比如root),并创建了一些无法被覆盖的文件。
只需使用chown命令将这些文件的所有权更改为当前用户即可,例如:
chown -R $(whoami) .
chown -R $(whoami) .
。 - Pavan Jadda如果你正在使用微软的Windows系统,可能是因为在文件资源管理器中“查看”了隐藏文件才导致了错误。
如果您使用的是Windows,并且遇到了任何Git权限问题,请确保您(本地)存储库的.git
文件夹没有被标记为隐藏。
您可以隐藏目录本身,但不能隐藏其内容(文件、子目录)。
对于Windows用户,还有另一种解决方案:
如果您正在使用YandexDisk,并且您的.git文件夹在同步中,YandexDisk会在同步后设置隐藏和只读属性。因此,请关闭YandexDisk,并使.git文件夹及其所有子文件夹和文件不可见并且非只读。
这通常不是权限问题。
当合并时需要记录提交信息,并且您没有保存并退出文本编辑器而是直接退出时,可能会发生这种情况。
Git似乎假定仍有人在编辑提交消息,并拒绝覆盖现有文件,因为这会导致意外行为和另一个提交消息的丢失。
chmod 664
文件 .git/COMMIT_EDITMSG
可以赋予该文件组写权限。
在我的情况下,该文件被另一个用户拥有,该用户是开发组的一部分。赋予它组写权限解决了问题。
.git
目录应位于您的仓库根目录中。
命令(假设您在 .git 目录中):
chmod 664 COMMIT_EDITMSG
快速提示:
如果您将文件设置为隐藏/只读,也可能会发生这种情况。尝试将整个文件夹设置为非隐藏并取消只读。
COMMIT_EDITMSG
文件的所有者(B),将当前用户更改为B并重新提交。
sudo su B
.git
文件夹设置为可见后,问题得到了解决,原来它是隐藏的 :-) - ako