在将git存储库从Linux克隆到Windows系统时,在结帐阶段出现以下错误:
$ git clone gituser @ serveraddr:/git/git_repo.git git_WA
克隆到“git_WA”…
gituser @ serveraddr的密码:
远程:计数对象:500846,完成。
远程:压缩对象:100%(118676/118676),完成。
远程:共计500846(三angular洲307739),重用483023(三angular洲291136)
接收对象:100%(500846/500846),907.54 MiB | 9.04 MiB / s,完成。
解决三angular洲:100%(307739/307739),完成。错误:无法创build文件RealR ******************************************* ************************************************** ************************************************** ************************************************** ************* validation.xml(没有这样的文件或目录)
检出文件:100%(441329/441329)
检出文件:100%(441329/441329),完成。
完成。
案例2:克隆为裸回购,从本地裸回购签出=>相同的错误。
案例3:直接克隆C:\中的回购,结账成功,没有错误。
– >它看起来像文件名/文件path长度限制的问题。
案例4:从SVN回购中检出相同的文件。 能够在任何地点结账,没有任何问题。 因此从Windows端没有问题。 (是的,我有SVN和GIT的数据,我只是从SVN迁移到GIT)。
因此,问题必须在msysgit之内,一些文件path长度的限制。 可以修改gitclient / msysgit的path长度吗?
编辑1: 所有的操作尝试与TortoiseGIT客户端v1.8.0和git-bash:git版本1.8.0.msysgit.0 。
编辑2:添加克隆时使用的实际命令。
在将项目签出到具有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
我通过签出c:\ git来解决这个问题,它在6或15个字符的长度范围内保持了Windows限制下的最大路径长度。
许多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 …)不支持长路径。
只有当你知道你在做什么,并准备好忍受一些怪癖,才能启用它。
尝试:
git config --system core.longpaths true
这将允许它检查文件甚至更长的文件路径。 与此相关的问题是当您尝试删除它时,因为Windows将不允许删除超过允许阈值的路径。 解决方法是重命名本地存储库中的文件夹,以便减少路径的总长度。 例如,一个alpha / beta / gamma / universe.txt的路径可以限制为1/2/3 / universe.txt,这样它的长度就在windows filesize阈值以下。
使用Windows PowerShell。 为我工作。