当我切换分支时,Git 出现错误:“删除目录 '<dirname>' 失败。我应该再试一次吗?”在我设置自定义文件夹图标后开始出现此问题。

4

我正在使用 Windows 上的 Git Bash (v1.7.10 msysgit)。前几天,我在存储库的某些子文件夹上设置了一些自定义文件夹图标,但自那以后,我无法在分支之间切换,会出现以下错误:

blake@ComputerName /c/csharp (AD_NativeRefactor)
$ git checkout master
Deletion of directory 'AllertFullfillmentDB' failed. Should I try again? (y/n) n

出现问题的目录不总是相同的,但它总是我设置自定义图标的三个子文件夹之一。

  • 我已经使用还原默认值删除了自定义图标。
  • 我已检查文件权限(与存储库中的其他文件夹没有区别)。
  • 我尝试使用Unlocker,但没有任何东西锁定该目录。
  • 我尝试重新启动Windows。

不太确定下一步该怎么做。有什么想法吗?


如果您在不同的位置再次克隆您的存储库,问题是否仍然存在? - VonC
我也遇到了这个问题,我相信unlocker指出sh.exe正在占用该目录。我还没有一个确定的解决方案。我会注意到,它通常不会实际造成任何伤害(但始终要检查git status以确保)。 - djs
@VonC - 新克隆的副本没有这个问题。因此,这可能是最简单的解决方案。 - blak3r
@VonC 如果你想发表答案,我会标记它为被接受的并删除我的。 - blak3r
@Christopher:您链接的不是正确的函数(可以通过打印不同的错误消息来判断)。OP 正在从 这个函数 获取消息。 - Frerich Raabe
@FrerichRaabe 哦,发现得好。为避免混淆,我会删除我的评论。 - Christopher
3个回答

1
如我在评论中所提到的,将存储库克隆到不同的位置是“重置”的最简单方法,并查看问题是否仍然存在。
显然,在存储库中为某些文件夹设置自定义图标会导致副作用,阻止分支之间的检出,因为Windows会保持打开一些需要删除的目录的句柄。

0

我认为我的解决方案在不移动存储库到新目录的情况下已经生效:

  1. 我将文件夹恢复为默认设置,并取消选中“只读”。
  2. 我回答了关于重试的 git 程序问题时选择了“否”。
  3. 最后,我执行了 git status 命令,只有一个标记为修改的 desktop.ini 文件,我将其简单地删除了。

这就是全部内容,我现在拥有干净且可操作的主分支。


-4
尝试在项目目录的根目录下使用chmod -R 777 *,然后重试切换分支。

3
使用777权限意味着您将授予所有文件和目录的访问和执行权限。这可能会导致非常严重的安全问题。强烈不建议这样做。 - Eric Aya

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