Windows 上的 Git Gui:无法打开“.git/PREPARE_COMMIT_MSG”:权限被拒绝

问题描述 投票:0回答:1

在工作计算机上使用 Windows 上的 Git Gui 已有两年多了。昨晚,repo 工作正常,但今天早上重新启动后,Git Gui 弹出一条有关“权限被拒绝”的消息。

不知道发生了什么变化,尽管我们确实收到一封电子邮件,说公司防病毒更新已推出,需要重新启动。此外,我的计算机上安装了 2022 年 12 月的 Windows 更新,也需要重新启动。

完整的错误消息是:

couldn't open ".git/PREPARE_COMMIT_MSG": permission denied
couldn't open ".git/PREPARE_COMMIT_MSG": permission denied
    while executing
"open [gitdir PREPARE_COMMIT_MSG] a"
    (procedure "run_prepare_commit_msg_hook" line 8)
    invoked from within
"run_prepare_commit_msg_hook"
    (procedure "rescan" line 27)
    invoked from within
"rescan ui_ready"
    (procedure "do_rescan" line 2)
    invoked from within
"do_rescan"
    ("after" script)

我尝试过的事情:

  • 根据具有类似“权限被拒绝”错误的线程中的建议,我从命令提示符运行以下命令:

    icacls“路径 o\Work.git”/grant MyUserName:(OI)(CI)F /T

命令执行没有错误,但存储库没有更改。

  • Ran Git Bash (MINGW64) 运行时不会立即出现任何错误,但只有

    git status
    可以工作。
    git add
    给出错误
    fatal: Unable to create '/path/to/Work/.git/index.lock': Permission denied

  • 在同一台工作计算机上尝试了一个单独的个人存储库,用于托管在 github.com 上的存储库。效果很好(可以提交、拉取等)。

有什么想法吗?我的用户帐户属于管理员组,但看起来 Windows 和“企业防病毒”更新已修改或阻止了与我的用户帐户有关的某些内容。

更新1

将 Windows 重新启动至安全模式。现在我可以

git add
git commit
,尽管
git push
由于无法解析
dev.azure.com
而失败(与未在安全模式下加载网络有关)。重新启动回到正常 Windows,问题再次出现:
git add
和其他命令立即失败,并且
git push
找到
dev.azure.com
,但我收到
permission denied
错误。

更新2

根据@LeGEC的评论,我检查了repo

.git
文件夹。没有
PREPRE_COMMIT_MESSAGE
index.lock
文件。我尚未触及权限,但在明确允许我的用户“完全控制”该文件夹后,它仍然无法工作 - 仍然是“权限被拒绝”错误。

一位同事不使用 Windows 版 Git,并且在最近更新后没有遇到问题。他建议我尝试 Visual Studio(它直接与

dev.azure.com
绑定)...并且 git 在 Visual Studio 2019 中工作!

因此,我们认为最近的防病毒或组策略更改已撤销、阻止或破坏了我的用户(大概)连接到公司网络和/或 dev.azure.com 的身份验证。 Visual Studio 能够以某种方式对我进行身份验证(通过 Mcicrosoft Azure 帐户?),但在使用我的 Windows 帐户时会失败......这有意义吗?

当我发现更多细节时,我会更新这个问题。

如果有人以前见过这种类型的事情(突然一个应用程序停止使用 git 并出现“权限被拒绝”错误,而另一个应用程序可以工作),我们将不胜感激您的意见!

windows git git-gui
1个回答
0
投票

我在新工作站上遇到了完全相同的问题,我的解决方法是为我的特定用户授予 .git 文件夹的修改权限,即使我已经拥有包括修改权限的完全控制权限。我通过删除我的修改权限并保留完全控制来确认这是必需的,然后再次出现错误。我只能通过给自己修改权限来消除错误。 我什至想到的是,幸运的是,我有一个工作正常的文件夹和一个不在同一工作站上的文件夹,这是唯一的区别。在这两个文件夹上,我都拥有完全控制权,但在正在运行的文件夹上,我也拥有修改权限 ACL。

© www.soinside.com 2019 - 2024. All rights reserved.