windows下git clone/checkout失敗問題整理


問題1: 文件名和目錄名太長導致git clone失敗

解決: 剛開始查覺得應該是windows對目錄長度有限制,查了后發現是260個字符。

1、文件名長度最大為255個英文字符,其中包括文件擴展名在內。一個漢字相當於兩版個英文字符。
2、文件的全路徑名長度最大為260個英文字符,包含擴展名在內。如路徑為C:\Program Files\filename.txt,那么這28個字符都包含在此字符數值中。一個漢字相當於兩個英文字符。

后面發現居然只需要改下git配置就能搞定,不多說,上命令

git config --system core.longpaths true

問題2: 如何解決windows下的大小寫問題導致的clone warning

$ git clone ssh://ehaiyag@gerritslave.sero.gic.ericsson.se:29418/msp/systemtest.git
Cloning into 'systemtest'...
remote: Counting objects: 127, done
remote: Finding sources: 100% (101/101)
remote: Getting sizes: 100% (91/91)
remote: Compressing objects: 100% (710263/710263)
remote: Total 103406 (delta 35), reused 103305 (delta 0)
Receiving objects: 100% (103406/103406), 1.55 GiB | 7.69 MiB/s, done.
Resolving deltas: 100% (83467/83467), done.
Updating files: 100% (16617/16617), done.
warning: the following paths have collided (e.g. case-sensitive paths
on a case-insensitive filesystem) and only one from the same
colliding group is in the working tree:
<忽略......>

解決方法1: windows上打開WSL,在linux模式下對該文件夾打開case insensitive模式,太復雜不好搞,棄之.................
解決方法2: 在git下直接用 git update-index --assume-unchanged xxxx命令強制忽略,但可能切換branch的時候又會出現該問題,需要重新一個一個文件忽略,試着用下面這條指令搞定。
for i in $(git status | grep modified |awk '{print $2}'); do git update-index --assume-unchanged $i; done

問題3: 如何解決windows下因為文件名不支持導致checkout失敗問題

$ git checkout master
error: invalid path 'NSTtests/dpiregression/etc/config/cups/PCPB-10269_UNSOLICITED_TRAFFIC/pdrs/app_unsolicited-app_ipv6_net_addr_2001:dba::b3-app_ipv6_net_addr_2001:dba::c4.yml'
error: invalid path 'NSTtests/dpiregression/etc/config/cups/PCPB-10269_UNSOLICITED_TRAFFIC/pdrs/app_unsolicited-app_net_ipv6_2001:dba::c4.yml'
error: invalid path 'NSTtests/dpiregression/etc/config/cups/PCPB-10269_UNSOLICITED_TRAFFIC/static/unsolicited-ipv6_net_addr_2001:dba::b3-ipv6_net_addr_2001:dba::c4-different_app.xml'
error: invalid path 'NSTtests/dpiregression/etc/config/cups/PCPB-10269_UNSOLICITED_TRAFFIC/static/unsolicited_and_net_ipv6_2001:dba::c4_different_app.xml'
error: invalid path 'NSTtests/dpiregression/etc/config/cups/session/PCPB-714_TcpOpts/createSessionName_fda3:dad7:9842:16::1e:956e.yml'

上面提示是由於這幾個文件的用ipv6的冒號命名文件導致git checkout 失敗。
解決方法:
git config core.protectNTFS false
查了下官方手冊,官方原話: If set to true, do not allow checkout of paths that would cause problems with the NTFS filesystem

大概意思是說NTFS有個路徑保護機制,防止文件系統出錯。

完美搞定!!! 收工


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM