如何“git restore --staged .”删除的文件/文件夹与冒号(:)在他们的目录名在Windows上?

kupeojn6  于 2023-01-24  发布在  Git
关注(0)|答案(1)|浏览(125)

我有一个git repository文件夹在一个usb上,是从一台linux机器上取的。

  • 那个repo有两个文件夹,文件夹名中有冒号(:)(linux发行版允许这样做)
  • 存储库中的所有文件夹都已删除,此删除操作已暂存但未提交。
  • 这个回购协议然后被复制到上述usb。
  • 我现在在Windows机器上,想恢复已删除的文件/文件夹。

我尝试使用这些命令:
1.“git restore .”,恢复了所有不具有:在他们的名字或他们的文件夹名。
1.“git restore --staged .”这给予我这个错误:“错误:路径'foldernamewitha:/'无效。”
我猜这是因为windows不允许:文件/文件夹的名称。有什么办法可以解决这个问题吗?

sdnqo3pr

sdnqo3pr1#

使用允许在文件系统路径中使用:的操作系统,或者重命名路径。
如果你在Windows上卡住了,你可以用核心命令来强制这个,找到一个可行的冒号的替代品。也许你可以使用url编码?

git ls-tree -r @ | sed 's,:,%3A,g' | git update-index --index-info

索引信息文档
但您必须在没有这些限制的操作系统上反向执行此过程,并且没有查找未损坏名称的代码会找到这些文件,因此这只会让您在尝试执行任何操作的过程中多走一步。可能“无论这是什么,请不要使用Windows”是最好的,也可能这不是一个选项;如果这一步不能让你达到目的,你就必须解释你在这里要做什么。
编辑:一种可能性:你是否尝试只重置没有冒号的路径?在上面的sed中将s,:,%3A,g重置为/:/d

相关问题