[英]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.