Ear*_*rlz 9 windows git permissions windows-8
因此,最近 Windows 决定对我进行一些拖钓,并使其无法提交到我的 git 存储库
它在 git 中给了我这个错误(在 Cygwin 中):
$ git commit -a
error: insufficient permission for adding an object to repository database .git/objects
error: NVG510Fixer/NVG510Fixer/Resources/layout/WarningConfirmation.axml: failed to insert into database
error: unable to index file NVG510Fixer/NVG510Fixer/Resources/layout/WarningConfirmation.axml
fatal: updating files failed
Run Code Online (Sandbox Code Playgroud)
嗯……但是我会转到 NVG510Fixer 文件夹并递归地获取其中所有内容的所有权,并确保每个人都拥有完全控制权。这似乎有效,但它不会使错误消失..所以,我决定转到.git并右键单击属性并从那里(递归地)获得所有权。此时,它变得更加奇怪:

Windows到底在做什么?!我是管理员。这台计算机甚至没有加入域。我怎么不能访问几分钟前我可以访问的文件!?
使用takeown管理命令行中的命令。可以删除Full Access管理员组的权限,如果发生这种情况,GUI 版本无法更改权限,但命令行命令仍然可以执行此操作。
takeown /f C:\dev\nvg510controls\.git /r /d Y
Run Code Online (Sandbox Code Playgroud)
如果你想成为额外看上你可以设置权限通过命令行太
icacls C:\dev\nvg510controls\.git /t /grant Everyone:(F)
Run Code Online (Sandbox Code Playgroud)
如果这些命令都不起作用,请下载PsExec并执行命令
psexec -i -s icacls C:\dev\nvg510controls\.git /t /grant Everyone:(F)
Run Code Online (Sandbox Code Playgroud)
将icacls作为 SYSTEM 用户而不是管理员用户运行。
尝试递归地将所有者更改回其他人并返回到您自己。这通常对我有用。我认为这可能是因为您无权访问子文件夹和文件,而只能访问 .git 文件夹。更改所有者并选择所有子文件夹选项。然后更改权限并启用相同的树选项,看看它是否有效