git rebase:"错误:无法查看'文件名':权限被拒绝"

393
我正在使用git,并完成了一次小的提交,然后进行了大的提交。我决定在推送前使用git rebase将这两个提交合并。 (我以前从未这样做过。) 所以我做了以下操作: git rebase -i HEAD~2 这使我进入编辑器,在那里我选择选取较早的提交并压缩后面的提交。当我保存时,git会显示: 错误:无法访问 '文件名':权限被拒绝 无法应用sha1值为...的提交 现在: - 当我执行git log时,两个提交都没有出现。 - git status 告诉我“当前没有任何分支”。 - 一个文件被列为已修改并处于索引中,两个文件被列为未跟踪。我的第一个提交只有一个文件(我想),而我的第二个提交有十几个文件。 发生了什么事?如何解决?

12
你是否在Windows上使用Git? - CB Bailey
2
你正在运行病毒检查器吗?有时候质量较差的病毒检查程序会导致这样的问题。 - Greg Hewgill
55
我在使用git checkout时遇到了问题(因此无法像被接受的答案建议的那样中止操作),但关闭所有的IDE后,问题得以解决。第二个答案应该是被接受的答案。 - plus-
2
@IanGrainger,你提到的答案是在被接受的答案发布八个月后发布的。我需要每隔几个月访问所有问题并潜在地更改它们的被接受的答案吗?投票按钮存在是有原因的。如果最受欢迎的答案比被接受的答案更有帮助,那么请使用它。谁会阻止你呢?但我接受了我所接受的答案,因为它对我有帮助,而我是提出问题的人。 - Ryan Lundy
我见过的最愚蠢、无用、毫无意义的错误信息。 - garryp
显示剩余5条评论
36个回答

0

同样的问题,但是使用SourceTree(或任何其他git客户端)。我添加了我的答案,因为没有一个答案符合我的情况。

将分支从“develop”更改为“main”会更改本地文件夹的实际文件和子文件夹。可能会发生一个在“master”中不存在的文件夹没有完全被删除,而Windows认为您只失去了访问权限(即使您是管理员)。 当从主分支合并到开发分支时,git客户端尝试访问该文件夹。如果没有访问权限,则返回上述错误。

  • 从一个分支切换到最新的分支可以解决问题,然后 回到主分支(双重检查文件夹/文件是否实际上已经被删除)。
  • 关闭客户端和/或编辑器无法解决问题!
  • 重新启动有帮助,但是浪费时间(个人意见)

0

我退出了正在访问项目目录的文本编辑器,然后尝试合并到主分支,结果成功了。


0

我刚遇到了这个问题。这里的任何答案都没有解决我的问题。

最终发现是我在一个分支上添加的NuGet包,在切换回主分支后似乎不存在了。一旦我进行合并,它就会说newtonsoft...xml无法启动。我会去找相关的文件并打开它,但Windows会返回一个错误,说找不到该文件(尽管我正在看着它)

我是通过右键单击删除该文件(虽然它起作用,但我无法打开它,因为Windows找不到它???),然后再次尝试合并来解决这个问题的。

非常奇怪。

希望这能帮助以后的某个人。


0

0

我正在使用Windows 10,遇到了这个错误,但即使重启电脑并以管理员权限打开也无法解决我的问题。

所以看起来我的存储库权限是问题所在。

为了确保,我安装了所有新的Windows更新,然后重新启动了电脑,最后删除了所有不必要的权限。

以管理员身份运行powershell并运行:

attrib -s <path_to_your_directory> 
attrib -r -a <path_to_your_directory> 

有关此 PowerShell 命令的详细信息,请参见: https://learn.microsoft.com/zh-cn/windows-server/administration/windows-commands/attrib


-1
我们通过在Program Files中右键单击sh.exe并在安全选项卡中设置“以管理员身份运行”来解决权限问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接