git पुल एरर फाइलनाम के साथ बहुत लंबा है


114

मैं अपने ओएस के रूप में विंडोज का उपयोग कर रहा हूं, और एक दोस्त के साथ एक प्रोजेक्ट पर काम कर रहा हूं जो मैक का उपयोग कर रहा है। उन्होंने हमारे गितुब के कोड में जाँच की।

मैं उसके द्वारा किए गए हर काम को खींचने की कोशिश कर रहा था और उसने 3 पार्टी कोड की "फाइलनाम बहुत लंबे" त्रुटियों के साथ निरस्त कर दिया।

मैं क्या कर सकता हूँ?


आपके ऑपरेशन के आधार पर उस समस्या के दो अलग-अलग मामले हैं। यदि रिपॉजिटरी पहले से मौजूद है, तो आप इसके कॉन्फ़िगरेशन को संपादित कर सकते हैं। लेकिन अगर नहीं? नई निर्देशिका बनाने के लिए क्लोनिंग / चेकआउट के लिए केवल @AlexRosenfeld का जवाब मदद करेगा।
गंगनुस

जवाबों:


200

एमएसआईएसजिट एफएफ़टीएस जीआईटी पर एक अप्रत्यक्ष रूप से एक लंबा रास्ता नहीं बनाया जा सकता है क्योंकि यह अभी तक पुराना नहीं है, क्योंकि यह अभी भी पुराने एमएसआईज़िट टिकट # 110 से लिंक करता है । हालाँकि, बाद में टिकट # 122 के अनुसार समस्या msysgit 1.9 में तय की गई है, इस प्रकार:

  1. Msysgit में अपडेट 1.9 (या बाद में)
  2. Git Bash लॉन्च करें
  3. अपने Git रिपॉजिटरी में जाएं जो लंबे रास्तों के मुद्दे से 'ग्रस्त' है
  4. के साथ लंबे रास्तों का समर्थन सक्षम करें git config core.longpaths true

अब तक, यह मेरे लिए बहुत अच्छा काम कर रहा है।

टिकट # 122 पर टिप्पणी में महत्वपूर्ण सूचना से अवगत रहें

यहां वापस न आएं और शिकायत करें कि यह विंडोज एक्सप्लोरर, cmd.exe, बैश या आपके द्वारा उपयोग किए जा रहे टूल को तोड़ता है।


कुछ अपडेट हैं, ऐसा लगता है कि कुछ अतिरिक्त स्क्रिप्ट है जिसे आपको mysysgit github.com/msysgit/git/pull/122#issuecomment-43653756
एडम ग्रांट

18
वास्तव में किसके लिए काम किया गया था: git config --global core.longpaths true
एंटोन एंड्रीव

@AntonAndreev यप, यदि आप इसे वैश्विक दायरे में स्थापित करना चाहते हैं, तो यह ठीक है। रिपॉजिटरी का स्थानीय दायरा पूरी तरह से मान्य है।
mloskot

इसने वैश्विक स्तर पर इसे स्थापित किए बिना मेरे लिए काम नहीं किया।
एंटोन एंड्रीव

1
इस तरह से एक नई निर्देशिका बनाने के साथ क्लोनिंग / चेकआउट के लिए काम नहीं करेगा। केवल @AlexRosenfeld का जवाब मदद करेगा।
गंगनुस

69

समाधान 1 - इस कमांड को चलाकर, वैश्विक विन्यास सेट करें:

git config --system core.longpaths true

Solution2 - या आप नीचे की तरह अपनी विशिष्ट git config फाइल को सीधे संपादित कर सकते हैं:

YourRepoFolder -> .git -> कॉन्फ़िगरेशन:

[core]
    repositoryformatversion = 0
    filemode = false
    ...
    longpaths = true        <-- (add this line under core section)

समाधान 3 - जब एक नया भंडार क्लोनिंग: यहाँ


1
इस तरह से एक नई निर्देशिका बनाने के साथ क्लोनिंग / चेकआउट के लिए काम नहीं करेगा। केवल @AlexRosenfeld का जवाब मदद करेगा।
गंगनुस

मैंने एक जगह पर, धन्यवाद के साथ, इसका उत्तर अपडेट किया।
डैनियल हारी

26

कुछ साल देर से, लेकिन मैं यह जोड़ना चाहूंगा कि अगर आपको ऐसा करने की आवश्यकता है तो एक झपट्टा (जैसे मैंने किया था) आप क्लोन सेटिंग्स को कमांड के दौरान सेट कर सकते हैं। इसे इस्तेमाल करे:

git clone -c core.longpaths=true <your.url.here>

1
चीयर्स दोस्त! यह एक महान निर्देशिका जब github से क्लोनिंग का काम किया है।
जे किलीन

कोई समस्या नहीं यह मदद की खुशी!
xandermonkey

1
हाँ! यह एक, और क्लोनिंग के लिए - केवल यह एक काम करता है!
गंगनुस

यह काम नहीं करता है, मेरी क्लोनिंग अभी भी समाप्त हो जाती है। मैं उपयोग कर रहा हूँ git version 1.8.4.msysgit.0, कोई विचार?
सरल-समाधान

ऐसा लगता है कि यह पदावनत है । शायद git-scm का उपयोग करके देखें ? आपको क्या त्रुटि मिल रही है?
xandermonkey

12

लॉन्गपैथ संपत्ति जोड़ने के लिए अपनी.itconfig फ़ाइल खोलें। तो यह निम्नलिखित की तरह दिखेगा:

[core]
symlinks = false
autocrlf = true
longpaths = true

1
इस तरह से एक नई निर्देशिका बनाने के साथ क्लोनिंग / चेकआउट के लिए काम नहीं करेगा। केवल @AlexRosenfeld का जवाब मदद करेगा।
गंगनुस

6

जैसा कि कोई है जो विंडोज पर जावा रिपॉजिटरी के साथ लगातार इस समस्या में भाग गया है, सबसे अच्छा समाधान साइगविन ( https://www.cygwin.com/ ) को स्थापित करना है और सभी> डेवेल> गिट के तहत इसकी गिट इंस्टॉलेशन का उपयोग करना है।

इसका कारण यह है कि मैं अब तक का सबसे अच्छा समाधान है क्योंकि सिग्विन लंबे पथ के नाम का प्रबंधन करता है ताकि अन्य प्रदान किए गए कमांड लाभ हों। Ex: ढूँढें, cp और rm। मेरा विश्वास करो, असली समस्या तब शुरू होती है जब आपको पथ के नाम हटाने पड़ते हैं जो कि विंडोज में बहुत लंबे होते हैं।


4

अपनी फाइल को फाइल सिस्टम रूट के करीब रखने की कोशिश करें। अधिक जानकारी: तकनीकी कारणों से, विंडोज के लिए Git फाइल या निर्देशिका नहीं बना सकता है जब निरपेक्ष पथ 260 वर्णों से अधिक लंबा हो


ऐसा लगता है कि यह केवल 130 पर जा सकता है [शायद डिफ़ॉल्ट रूप से विंडोज़ डबल बाइट यूनिकोड वर्णों का उपयोग करता है]?]
रोज़गारपैक

5
अधिक लोगों को इस प्रतिबंध को बदलने के लिए Microsoft को धक्का देना चाहिए (और उनके द्वारा टूटी हुई विरासत एपीआई को ठीक करना चाहिए)। ऐसा कोई कारण नहीं है कि हम अभी भी उन दिनों के अवशेष के साथ रहें जब फ़ाइल नाम <8> <3> वर्णों तक सीमित थे। इसे तुरंत ठीक नहीं करके, एक बड़ा छेद खोदा जा रहा है। जब आप उस पर हों तो स्लैश दिशा को ठीक करें।
cchamberlain

@cchamberlain C: / foo / bar / baz पूरी तरह से मान्य है, जबकि \ foo \ bar \ baz भी मान्य है (यह वर्तमान कार्य निर्देशिका पर जो भी तार्किक ड्राइव को संदर्भित करेगा) / foo / bar / baz के साथ अस्पष्टता का कारण बन सकता है कमांड लाइन के झंडे।
JAB

@ जेएबी - यह सच है कि फॉरवर्ड स्लैश कभी-कभी काम करता है लेकिन जैसा आपने बताया कि यह विश्वसनीय नहीं है। cmd.exe एक तरह से रिएक्ट करेगा और दूसरे को पॉवरशेल करेगा। स्वतः पूर्ण टूट जाता है। अंतर्निहित API इसे समझता है लेकिन cmd.exe सभी मामलों में नहीं है और बैकस्लैश के सुरक्षित उपयोग के कारण तार कभी-कभी घटते हैं। सामान्य विंडोज पथ में मौजूद रिक्त स्थान और कोष्ठक की संख्या के साथ पहले से ही पर्याप्त कमांड लाइन बैकलैश कचरा है।
cchamberlain

2
इसका कोई हल नहीं है। प्रौद्योगिकी को मनुष्य का सेवक होना चाहिए, न कि मनुष्य को तकनीक के लिए नौकर होना चाहिए।
डैनियल हारी

4

विंडोज़ पर "cmd" को व्यवस्थापक के रूप में चलाते हैं और कमांड निष्पादित करते हैं।

"C:\Program Files\Git\mingw64\etc>"
"git config --system core.longpaths true"

या आपको उस फ़ोल्डर के लिए chmod करना होगा जहाँ पर git स्थापित है।

या "Git \ mingw64 \ etc" पथ पर जाकर मैन्युअल रूप से अपनी फ़ाइल अपडेट करें

[http]
    sslBackend = schannel
[diff "astextplain"]
    textconv = astextplain
[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true
[credential]
    helper = manager
**[core]
    longpaths = true**
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.