git clone成功,但签出失败;由于文件夹具有前导或尾随空格

Muh*_*eeb 2 windows git macos

我通常从macOS提交一个项目,但我没有注意到前导和尾随空格意外地嵌入了文件夹名称,但是最近我尝试从Windows克隆存储库,但出现此错误:

fatal: cannot create directory at 'FolderName /SubFolderName'
warning: Clone succeeded, but checkout failed.
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以从Windows成功检出而不用从Mac进行修改?如何防止导致Windows检出失败的前导空格和尾随空格?有没有一种方法可以强制Finder突出显示macOS中的所有前导或尾随空格,甚至更好:出于兼容性目的而拒绝它们?

max*_*630 5

最简单的方法是在MacOS中重命名它们。但是您也可以使用低级命令在Windows中修复它:

  • 使用稀疏签出从签出中跳过损坏的路径
  • 找出目录的树形哈希:git ls-tree HEAD:<parent dir>git ls-tree HEAD如果目录位于顶层,它将显示类似“ 040000 tree df2b8fc99e1c1d4dbc0a854d9f72157f1d6ea078 invalid_dir”的内容
  • 将树添加为新名称: git update-index --add --cacheinfo 040000,df2b8fc99e1c1d4dbc0a854d9f72157f1d6ea078,valid_dir
  • 删除旧目录: git rm -r --cached 'invalid_dir '
  • 提交重命名: git commit -m 'Rename invalid direct'
  • 更新worktree签出有效的目录:git reset --hard:我假设你没有任何工作,在这种情况下没有完成,所以没有什么可失去的)