无法在git bash中找到要删除的文件,但它在文件资源管理器中显示出来。

14 浏览
0 Comments

无法在git bash中找到要删除的文件,但它在文件资源管理器中显示出来。

我昨天开始学习git,当我创建ssh密钥时犯了一个错误,如第一张图片所示。

我尝试了使用.bat删除方式和dos的del命令,仍无法删除名为cd ..的文件。

提示显示无法找到文件。该文件的大小属性是0字节。

如何删除这个文件?

0
0 Comments

无法通过git bash找到要删除的文件,但在文件浏览器中显示出来。

问题原因:

1. 文件可能位于不可见的隐藏文件夹中,无法通过git bash访问到。

2. 文件可能是系统文件,系统可能不允许直接删除。

解决方法:

1. 查看文件属性,可以找到文件位置。前往该位置,并从那里删除文件。

2. 确定文件类型,如果是系统文件,系统会禁止删除。以管理员身份打开文件浏览器,然后尝试删除文件。

3. 确认文件是由使用git命令时自己创建的。在问题描述中,我截了两张图片。无论我尝试删除、重命名还是移动文件,都提示找不到文件。

以上是无法通过git bash找到要删除的文件,但在文件浏览器中显示出来的问题原因和解决方法。

0
0 Comments

问题出现的原因是通过删除"cd .."的方式在CMD Windows中使用<path/to/git>\latest\usr\bin%PATH%。这样我就可以访问rm.exe了。但是在使用rm.exe命令删除文件时,无法找到要删除的文件cd ..

解决方法是使用纯粹的Windows语法来删除文件,而不需要使用类似于Linux的rm命令。使用del "\\?\C:\test\cd .."命令即可。这样可以禁用所有字符串解析,并将后面的字符串直接发送到文件系统。这种方法不需要使用Git的rm.exe命令,只需要使用Windows的del命令即可。

需要注意的是,被删除的文件cd ..不是由Git命令创建的,而是由ssh-keygen命令创建的。由于该文件没有被Git跟踪,所以git rm命令无法起作用。因此,可以使用纯粹的Windows命令del来删除该文件。

由于rm.exe使用了msys-2.0.dll,该库链接了来自kernel32.dll的Windows API函数和来自ntdll.dll的本地NT系统调用。通过绕过Windows API,并直接进行系统调用,解决了无法找到要删除的文件的问题。具体来说,使用了NtOpenFile(打开目录以列出目录和要删除的cd ..文件)、NtQueryDirectoryFile(列出目录)和NtSetInformationFile(设置文件的删除操作)这几个系统调用。

通过上述解决方法,问题得到了解决。

0