[英]git checkout error: unable to create file
在将git存储库从Linux克隆到Windows系统时,我在结帐阶段遇到以下错误:
$ git clone gituser @ serveraddr:/git/git_repo.git git_WA
克隆到'git_WA'......
gituser @ serveraddr的密码:
remote:计数对象:500846,完成。
remote:压缩对象:100%(118676/118676),完成。
远程:总计500846(delta 307739),重用483023(delta 291136)
接收物体:100%(500846/500846),907.54 MiB | 完成9.04 MiB / s。
解决增量:100%(307739/307739),完成。错误:无法创建文件RealR ******************************************* ************************************************** ************************************************** ************************************************** ************* validation.xml(没有这样的文件或目录)
签出文件:100%(441329/441329)
签出文件:100%(441329/441329),完成。
完成。
案例2:克隆为裸仓库,从本地裸仓库中检出全部=>相同的错误。
案例3:直接克隆C:\\中的仓库,结账成功,无错误。
- >看起来像文件名/文件路径长度限制的问题。
案例4:从SVN repo签出相同的文件。 能够在任何位置结账,没有任何问题。 因此从Windows端没有问题。 (是的,我在SVN和GIT中都有数据,我只是从SVN迁移到GIT)。
因此,问题必须在msysgit内,一些文件路径长度限制。 可以调整gitclient / msysgit中的路径长度吗?
Edit1: 所有操作都尝试使用TortoiseGIT客户端v1.8.0和git-bash:git版本1.8.0.msysgit.0 。
Edit2:添加了克隆时使用的实际命令。
将项目签出到具有67-(Windows)或76-(cygwin)字符库路径的Windows目录时,我遇到了类似的问题 - 当添加到签出文件的路径长度时,它超出了Windows的路径 - 长度限制:
git checkout -f HEAD
error: unable to create file <194-character filepath> (No such file or directory)
fatal: cannot create directory at '<187-character directory path>': No such file
or directory
我通过将git存储库签出到c:\\ git解决了这个问题 ,它的长度为6或15个字符,保持Windows限制下的最大路径长度。
尝试:
git config --system core.longpaths true
这将允许它检查文件,即使文件路径较长。 这个问题就是当你试图删除它时,因为Windows不允许删除超过允许阈值的路径。 解决方法是重命名本地存储库中的文件夹,以减少路径的总长度。 例如,alpha / beta / gamma / universe.txt的路径可以限制为1/2/3 / universe.txt,因此它的长度在windows filesize阈值之下。
许多Windows API限制为260个符号用于文件路径名。 因此git无法创建名称超过260个符号的文件。 NTFS文件系统实际上支持更长的名称(32k),但没有简单的方法来允许程序的长名称。
解决方法1:将项目移动到更靠近磁盘根目录的新位置。 优点:
坏处:
解决方法2:从更靠近磁盘根目录的文件夹创建项目文件夹的Junction ,并从联结文件夹执行git clone。 您可以使用mklink
命令或Link Shell Extension执行此操作。
优点:
坏处:
考虑到类似的问题 ,我看到的唯一建议是:
解决方法:使用http://www.cygwin.com/
或者至少检查msysgit的git-bash会话中的结账是否更好。
2015年5月更新(2年后):
注意: 最新的2.4.1 git-for-windows建议 :
core.longpaths::
在Git for Windows中为内置命令启用长路径(> 260)支持。
默认情况下禁用此选项,因为Windows资源管理器,cmd.exe和Git for Windows工具链(msys,bash,tcl,perl ...)不支持长路径。
只有在你知道自己在做什么并且准备好生活在一些怪癖时才启用它。
使用Windows PowerShell。 为我工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.