为什么clone成功了,checkout却失败了?

Why is clone succeeded, but checkout failed?

当我在我的 Windows 10.

中克隆一个大项目时获得关注 error/warning
....
error: unable to create symlink Codes/MyProject/Pods/Headers/Public/nanopb/pb_common.h: No such file or directory
error: unable to create symlink Codes/MyProject/Pods/Headers/Public/nanopb/pb_decode.h: No such file or directory
error: unable to create symlink Codes/MyProject/Pods/Headers/Public/nanopb/pb_encode.h: No such file or directory
Updating files: 100% (9536/9536), done.
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry with 'git restore --source=HEAD :/'

为什么会出现警告,如何解决?

但是,我尝试 运行 按照 gits 建议从下载的 repo 根目录执行命令,

git restore --source=HEAD :/

但我又遇到了类似的错误,

    ....
    error: unable to create symlink Codes/MyProject/Pods/Headers/Public/nanopb/pb_common.h: No such file or directory
    error: unable to create symlink Codes/MyProject/Pods/Headers/Public/nanopb/pb_decode.h: No such file or directory
    error: unable to create symlink Codes/MyProject/Pods/Headers/Public/nanopb/pb_encode.h: No such file or directory

使用来自 Git bash,

的以下命令解决了问题

git config --global core.symlinks false

Windows,默认情况下,需要特殊权限才能创建符号链接。这是因为当 Windows 添加符号链接时,Microsoft 担心现有程序会因 Unix 上众所周知的符号链接而获得漏洞,并且不希望这种情况自动发生。回想起来,这使得 Windows.

上的符号链接极其不常见

但是,如果您使用的是 Windows 10 或更高版本,则可以启用开发人员模式,该模式允许非特权用户创建符号链接。我强烈推荐这个,因为符号链接非常有用,但有些人不能这样做,因为他们的系统管理员不允许这样做。如果在您的情况下可行,它将解决问题。

您可以通过将 core.symlinks 设置为 false 来禁用符号链接。通常 Git 在不正确支持符号链接的文件系统上克隆存储库时会自动执行此操作,因此您通常不需要这样做。请注意,在许多情况下,项目将在这种情况下被破坏,因为符号链接通常存在,因为它们是工作所必需的。

这里的另一种可能性是您的项目有两个文件或目录,仅大小写不同,Windows 默认情况下不区分大小写。因此,在一种情况下 应该 是符号链接的东西在另一种情况下类似于文件或目录,并且由于您的系统一次只能处理一种情况,因此您可以立即检查两者。这只是 Windows 默认工作方式的不幸结果,您需要使用区分大小写的环境,例如 Linux 或 WSL。