更新本地分支时出现 Git 错误:合并时出错:无法在以下位置创建目录:没有这样的文件或目录



我正在尝试从远程更新本地存储库。通常我使用git pull,它总是有效的。

其中一个贡献者在他创建的路径中添加了文件。路径包含空白:"/d1/d2/d3";。当我尝试git pull更新时,我得到以下错误:

致命:无法在"/d1/d2/d3"处创建目录:没有这样的文件或目录

我尝试过:git checkout -- '/d1/d2 / d3 /d4/file.ext'我有以下错误:

错误:路径规范'/d1/d2/d3/d4/file.ext'与git 已知的任何文件都不匹配

  1. 如何安全地更新远程路径
  2. 如果不可能,我如何绕过此错误

谢谢

最有可能工作

您可以通过手动创建目录来克服这一问题,一次创建一个目录,而不是通过一个命令一次创建所有目录。在Git Bash:

$ mkdir "cd1/cd2 / cd3"
mkdir: cannot create directory ‘cd1/cd2 / cd3’: No such file or directory
$ mkdir "cd1"
$ mkdir "cd1/cd2 "
$ mkdir "cd1/cd2 / cd3"
$ mkdir "cd1/cd2 / cd3/cd4"
$ cd cd1
$ ls
'cd2 '/
$ cd "cd2 "
$ ls
' cd3'/
etc.

当git试图恢复目录中的文件时,这将使目录已经存在。然后合并应该会顺利完成。

当目录与末尾(和/或开头(的空格链接在一起时,mkdir命令在尝试创建中间目录时会阻塞。当它拆分内部目录名时,可能没有保护它们,空间也被剥离了。

如果不起作用

如果这不能直接起作用,请将git pull命令拆分为git fetch origingit merge origin/master。然后,您将不得不继续使用不同的方法,要么合并到远程origin/master分支,要么将本地master分支重置为新的提交。如上所示手动创建文件夹后,您应该能够手动从新提交中提取所有文件,然后对主分支进行软重置(注意:如果您和它之间存在任何问题,请在执行此操作之前合并到问题提交中(。

在远程服务器上删除

顺便说一句,如果你只想删除有问题的目录和那里的任何文件,你可能可以在远程web界面上这样做。至少对于Github,您可以删除和编辑文件并进行新的提交。请记住,如果您删除一个目录中的所有文件,git不会保存实际的目录本身,因此您可能只需要删除最终目录中的文件。

最新更新