我在Windows上使用git bash。我编辑了一些文件,提交了它们,并将其推送到分支,然后切换回master进行拉动,然后尝试切换回我的分支以将master合并到其中。 Git告诉我,我没有获取一堆文件的权限,因此拒绝检出分支。
我在Windows上的git中更改文件权限的唯一发现是关于如何翻转可执行位的一堆帖子,并告诉我可以使用git ls-tree branch
和git ls-files branch
看到权限。使用前者,我看到包含文件的文件夹在我要切换回的分支上的权限为040000。显然,将可执行文件位翻转不会使此文件夹可写。如何更改这些权限?
编辑:环顾四周,我很困惑。所有文件夹都具有与上述文件夹相同的权限(040000),但是我可以将其安装到其中并查看其中的文件。问题所在的文件夹是仅在新分支中添加的文件夹。无论如何,我似乎都在已签出的存储库中有它们的副本,但是无论是通过git bash还是Windows资源管理器都无法访问它们。
答案 0 :(得分:0)
好吧,在这种特殊情况下,我可以通过Windows资源管理器删除包含有问题的文件夹之一的文件夹来解决该问题。完成此操作后,我尝试删除另一个文件夹,但是单击该文件夹导致Windows告诉我该文件夹不再存在(而不是我无法访问它,这是它之前告诉我的)。这两个文件夹根本不相关。无论如何,我确认git bash中都没有该文件夹,然后能够成功检出该分支。我不确定这里发生了什么,如果有人请解释一下。
答案 1 :(得分:0)
Windows进程可能会保留这些文件夹的活动句柄,从而阻止git checkout成功完成:当切换回分支时,checkout应该已经删除了那些文件夹。
这可以解释原始错误消息,而无需涉及实际的(chmod)权限。