我正在尝试从远程更新本地存储库。通常我使用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 已知的任何文件都不匹配
- 如何安全地更新远程路径
- 如果不可能,我如何绕过此错误
谢谢
最有可能工作
您可以通过手动创建目录来克服这一问题,一次创建一个目录,而不是通过一个命令一次创建所有目录。在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 origin
和git merge origin/master
。然后,您将不得不继续使用不同的方法,要么合并到远程origin/master
分支,要么将本地master
分支重置为新的提交。如上所示手动创建文件夹后,您应该能够手动从新提交中提取所有文件,然后对主分支进行软重置(注意:如果您和它之间存在任何问题,请在执行此操作之前合并到问题提交中(。
在远程服务器上删除
顺便说一句,如果你只想删除有问题的目录和那里的任何文件,你可能可以在远程web界面上这样做。至少对于Github,您可以删除和编辑文件并进行新的提交。请记住,如果您删除一个目录中的所有文件,git不会保存实际的目录本身,因此您可能只需要删除最终目录中的文件。