我正在尝试在 github 页面上部署 octopress。我按照以下说明进行操作:
http://octopress.org/docs/deploying/github/
这一切都很好,直到提交部分,我得到错误:
致命:无法打开'.git/COMMIT_EDITMSG':权限被拒绝
当然,我是我的 github.io 页面的所有者,我以前从未遇到过这个问题。为什么会发生这种情况,更重要的是我该如何解决?
我正在尝试在 github 页面上部署 octopress。我按照以下说明进行操作:
http://octopress.org/docs/deploying/github/
这一切都很好,直到提交部分,我得到错误:
致命:无法打开'.git/COMMIT_EDITMSG':权限被拒绝
当然,我是我的 github.io 页面的所有者,我以前从未遇到过这个问题。为什么会发生这种情况,更重要的是我该如何解决?
I solved it by deleting .git/COMMIT_EDITMSG
. Weird, I know.
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) .
如果您正在使用该死的 Microsoft Windows,则错误可能是由于您正在“观看”文件资源管理器中的隐藏文件..就是这样!
如果您使用的是 Windows 并且遇到任何 Git 权限问题,请确保您的(本地)存储库的.git
文件夹内容 未标记为 hidden。
但是,您可以隐藏目录本身,而不是它的内容(文件、子目录)。
Windows 用户的另一个解决方案:如果您使用 YandexDisk - 以及同步下的 .git 文件夹 - YandexDisk 在同步后设置隐藏和只读属性。因此,关闭 YandexDisk 并使 .git 文件夹以及所有子文件夹和文件不可见且不只读
chmod 664
该文件.git/COMMIT_EDITMSG
赋予它组写权限。
在我的情况下,该文件由属于我的开发组的另一个用户拥有。给它组写权限解决了它。
该.git
目录应位于存储库的根目录中。
命令(假设您在 .git 目录中):
chmod 664 COMMIT_EDITMSG
这往往不是权限问题。
当合并时提示您记录提交消息(例如)并且您没有保存并退出文本编辑器而只是退出时,可能会发生这种情况。
Git 似乎假设仍然有人在编辑提交消息并拒绝覆盖现有文件,因为这会导致意外行为和丢失另一条提交消息。
就我而言,原因是当前用户(A)不是COMMIT_EDITMSG
文件所有者(B),将当前用户更改为 B 并再次提交。
sudo su B
如果你使用的是 linux。去
cd /applicationname/.git
ls -al
您将看到 COMMIT_EDITMSG 文件的用户
进入根目录
sudo su
chown youruser: COMMIT_EDITMSG
你都准备好了!希望这可以帮助
如果您使用的是 Windows,请尝试以下方法之一。
如果 .git 文件夹被隐藏,则取消隐藏它及其内容
转到您的 .git 文件夹并删除“COMMIT_EDITMSG”文件
如果你使用 TortoiseGit,你可能已经打开了一个提交对话框
这发生在我身上,因为我不小心将我的存储库文件夹隐藏在 Windows 资源管理器属性选项中,然后取消选中隐藏属性。可能,这些操作使 .git 文件夹文件以某种方式发生了变化。但后来删除 COMMIT_EDITMSG 文件解决了这个问题。
快速说明:
如果您已将文件设置为隐藏/只读,则可能会发生这种情况。尝试将整个文件夹设置为取消隐藏并取消选中只读。
我正在使用 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
在运行 Visual Studio 和文件资源管理器时,我在 Windows 上遇到了类似的问题。关闭它们解决了这个问题。
只需在命令行上运行:chmod 777 -Rf /var/www/html/project-name/.git