OSX 10.10 yosemite बीटा पर git पुल: git-sh-setup: ऐसी कोई फ़ाइल या निर्देशिका नहीं


90

OSX 10.10 योसेमाइट बीटा में अपग्रेड करने के बाद, रनिंग git pullनिम्नलिखित त्रुटि लौटा रही है:

/ लाइब्रेरी / डेवलपर / कमांडलाइनटूल / usr / libexec / git-core / git-pull: पंक्ति 11: git-sh-setup: ऐसी कोई फ़ाइल या निर्देशिका नहीं

मैंने संदर्भित गिट-कोर निर्देशिका की जाँच की है और git-sh-setup.sh है।

अन्य git कमांड बिल्कुल अपेक्षित रूप से काम कर रहे हैं


3
मैं इस मुद्दे के साथ, को छोड़कर कर रहा हूँ git stash। मैं आपको
बता दूँ

केवल zsh के साथ यह समस्या थी ... बैश से चलाने पर गिट ठीक काम करने लगता था। Zsh संबंधित?
ज़ेके

12
यह zsh के साथ iTerm2 में एक बग था। iTerm2 अपनी नवीनतम रिलीज में यह निश्चित (v1.0.0.20140629)
आरडीएस

जवाबों:


100

मुझे लगता है कि अब के लिए इसके लिए सबसे साफ समाधान अपने iTerm सत्र में प्रारंभिक आदेश को बदलना है

/usr/bin/login -f <your user name>

यह मेरे लिए समस्या को हल करता है।

समस्या के विश्लेषण के लिए एक और डेटा बिंदु: ऐसा लगता है कि 10.10 में, PATH पर्यावरण चर की कई प्रतियां मौजूद हैं और दूसरी प्रतिलिपि पसंद करने के लिए उप-खंड लगता है।

ITerm द्वारा लॉन्च किए गए कंसोल पर किसी भी कोको एप्लिकेशन को लॉन्च करके आप इसे पुन: पेश कर सकते हैं। आपको इस तरह दिखने वाली चेतावनी मिलेगी:

2014-06-04 19:23:09.859 gitx[14676:362580] *** -[NSProcessInfo environment]: Warning: duplicate definition for key 'PATH' found in environment -- subsequent definitions are ignored.  The first definition was '(the path I have configured in my shell)', the ignored definition is '/usr/bin:/bin:/usr/sbin:/sbin'.

मेरा मानना ​​है कि यह 10.10 में एक समस्या है और iTerm नहीं है, लेकिन कुछ iTerm कर रहा है जो इसे स्वयं प्रकट करने के लिए पैदा कर रहा है (यह Terminal.app में नहीं होता है)

अद्यतन : यह iTerm पर्यावरण के लिए "दिलचस्प" सामान करने के कारण होता है। इस समस्या को दूर करने के लिए iTerm 2.0 की आधिकारिक रिलीज़ को अपडेट करें।


6
यह सही उत्तर होना चाहिए, अद्भुत सुधार। हालाँकि, मैं कमांड सेट करता हूँ /usr/bin/login -f $USER, बस इसलिए मैं एक ही प्रोफ़ाइल को कई खातों में देख सकता हूँ :)
Cadlac

12
जाहिर है, बैश सभी डुप्लिकेट किए गए वातावरण चर को हटा देता है। इसलिए, यदि आप इसके लिए कमांड सेट करते हैं, तो /bin/bash -c /bin/zshयह अन्य पर्यावरण चर को संरक्षित करेगा, जैसे $SSH_AUTH_SOCK
जिप्सी

2
इसने मेरे लिए अब तक के सबसे साफ तरीके से मुद्दे को तय किया। आपका बहुत बहुत धन्यवाद!
मेघफोन

2
यह ठीक करता है। लेकिन जब भी मुझे अपने id_rsa.pub के साथ ssh का उपयोग करने की आवश्यकता होती है, तो मुझे पासफ़्रेज़ में प्रवेश करने के लिए कहा गया। मुझे शुरुआती कमांड बदलने से पहले ऐसा करने की जरूरत नहीं थी, न ही टर्मिनल.एप्प में। कोई उपाय?
ZeR0

5
मुझे लगता /bin/bash -c /bin/zshहै कि इससे बेहतर है /usr/bin/login -f <your user name>, क्योंकि यह चरित्र को एन्कोडिंग रखता है। /usr/bin/login -f <your user name>मेरी एन्‍कोडिंग खो गई है और मैं अपनी फ़ाइलों को सामान्‍य नहीं दिखा सकता।
अल्फा लियू

35

मेरा मानना ​​है कि यह zsh का उपयोग करते समय iTerm में एक बग है। वे जानबूझकर / usr / bin / लॉगिन नहीं करते हैं, और वे पर्यावरण चर को साफ करने के लिए निष्पादन का उपयोग नहीं करते हैं जैसे उन्हें होना चाहिए।


1
वाह मुझे लगता है कि तुम सही हो। मैंने काम करने के लिए विभिन्न गिट फिक्स प्राप्त करने की कोशिश में घंटों बिताए हैं, और यह iTerm2 w / zsh से Yosemite के डिफ़ॉल्ट टर्मिनल (अभी भी zsh के साथ) में काम करने से बहुत अच्छा है। आपको यह कैसे लगी?
jbnunn

8
खैर, यह लोगों का अब तक का सबसे विशिष्ट समूह है ... एक किनारा मामला क्या है।
आकर्षित किया

2
यह एक बहुत अच्छा विश्लेषण था। इसलिए एक अच्छा समाधान यह है कि आरंभिक कमांड को iTerm में / usr / bin / login -f <अपने उपयोगकर्ता नाम> पर सेट करें।
पुतला

13
एक अन्य समाधान /bin/bash -c /bin/zsh
विन्स

1
से बदलने login shellके लिए commandप्राथमिकताएं> प्रोफ़ाइल> सामान्य अनुभाग में, और का उपयोग कर /bin/bash -c /bin/zah@Sorenly के रूप में, यह सुझाव दिया है इस अधिकार तय!
jlmakes

20

ITerm2 के नवीनतम संस्करण को डाउनलोड करना मेरे लिए यह तय किया गया है!


1
यदि आप इसे साबित करने के बिना हल करना चाहते हैं कि आप एक तकनीकी विशेषज्ञ हैं ..., बस ऐसा करें। मार्थिन को धन्यवाद ...
वर्मा

जैसा कि नीचे टिप्पणी में कहा गया है, यह iTerm और zsh एक साथ प्रतीत होता है जो गिट पुल को काम करने से रोकता है। ITerm2 पर जाकर इसे ठीक करता है।
माइकहॉस

4
@MikeHoss को स्पष्ट करने के लिए, iTerm2 संस्करण 1.0.x काम नहीं करता है, लेकिन iTerm2 संस्करण 2.0.x करता है। दोनों iTerm2 हैं, लेकिन संस्करण क्या मायने रखता है।
केविन कूपर

16

एक अन्य समाधान, अपने iTerm2 को संशोधित करें

cd /Applications/iTerm.app/Contents/MacOS
mv iTerm iTerm-bin

cat > iTerm <<EOF
#!/bin/sh
unset PATH
\${0}-bin
EOF

chmod +x iTerm

किया हुआ।

Yosemite के साथ अपने iTerm2 का आनंद लें!


iTerm2 समस्या है और यह समस्या का सबसे अच्छा समाधान है। कुडोस।
ओसोडो

मैं इस समस्या का सामना कर रहा था, यहां तक ​​कि सार्वजनिक 10.10 रिलीज पर भी, और इसने इसे ठीक किया। धन्यवाद फेंग!
ऐश फुरो

13

एक अस्थायी समाधान के रूप में मैंने गिट-पुल लाइनों को 11, 12 और 336 को संशोधित किया:

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n

eval="/usr/local/Cellar/git/2.0.0/libexec/git-core/git-merge $diffstat $no_commit $verify_signatures $edit $squash $no_ff $ff_only"

यह अब के लिए गिट-पुल को ठीक करता है, लेकिन मुझे यकीन है कि एक बेहतर समाधान है।


2
मुझे भी . /usr/local/Cellar/git/2.0.0/libexec/git-core/git-parse-remote
कीथ स्माइली

2
अगर मुझे इसे बदलने की आवश्यकता है, तो मैंने अपना समय निर्धारित करने के लिए सेट किया $GIT_PATH/git-sh-setup, आदि
TheJF

1
मुझे /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup: line 334: git: command not found fatal: 'pull' appears to be a git command, but we were not able to execute it. Maybe git-pull is broken?यह तय करने के बाद मिल रहा है , किसी को भी एक विचार है कि क्या करना है?
आकर्षित किया

@ और यह बदसूरत है, लेकिन मुझे गिट-श-सेटअप से गुजरना पड़ा और सभी gitको बदलना पड़ा /usr/local/bin/gitgitजीआईटी-पुल के कुछ उदाहरण भी थे जिन्हें प्रतिस्थापित किया जाना था
jbnunn

3

यहां एक अस्थायी फिक्स (Homebrew और Git 2.0.0 को मानते हुए) यदि आपको आधिकारिक फिक्स से पहले काम करने के लिए Git की आवश्यकता है। मैंने दो शेल चरों की स्थापना की:

export GIT_PATH="/usr/local/Cellar/git/2.0.0/bin"
export GIT_CORE_PATH="/usr/local/Cellar/git/2.0.0/libexec/git-core"

... और फिर gitउपयुक्त पूर्ण लिंक के साथ उदाहरणों को प्रतिस्थापित किया । आप ऐसा करने के लिए निम्नलिखित Gists का उपयोग कर सकते हैं:

यह सुनिश्चित करने के लिए एक हैक है, लेकिन यह आपको मिल जाएगा।

संपादित करें: सुनिश्चित करें कि आप ऐसा करने से पहले @pilif से उत्तर देखें ...


1

यूबिकिल का वर्कअट गिट रिबेस (और संभवतः जो अन्य कार्य नहीं करता है) के लिए भी लागू होता है। उस स्थिति में, इसे निम्नलिखित 47 के साथ लाइनों 47 और 48 को बदलने की आवश्यकता है:

. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-setup
. /usr/local/Cellar/git/2.0.0/libexec/git-core/git-sh-i18n

* यह पथ मानता है कि आपने होमब्रे के साथ गिट स्थापित किया है, और यह /usr/local/Cellar/git/2.0.0/ के अंदर रहता है।


1

अपनी गिट-पुल फ़ाइल को संपादित करें और इस लाइन को उसके ऊपर जोड़ें (टिप्पणी ब्लॉक के बाद)

PATH="$(dirname $0):$PATH"

या बस इसे अपने टर्मिनल में पेस्ट करें:

ed -s $(which git-pull) <<< $'6i\nPATH="$(dirname $0):$PATH"\n.\nwq'

अपडेट: जैसा कि पिछले iTerm2 अपडेट (1.0.0.20140629) के बाद से पाइलिफ द्वारा माना जाता है , git-pullइस PATHओवरराइड के बिना ठीक से चलता है ।


यह मेरे कॉन्फ़िगरेशन में एक कदम आगे जाने का एकमात्र समाधान प्रतीत होता है। PATH लाइन को जोड़ने के बाद, मुझे यह त्रुटि तब मिलती है जब मैं PULL: git: 'क्रेडेंशियल- osxkeychain' एक git कमांड नहीं है। 'Git --help' देखें। कोई विचार?
kiks73


0

अद्यतन: अभी भी नीचे उल्लिखित रिलीज के साथ काम नहीं कर रहा है, मेरी गलती है। Git धक्का काम करता है Git पुल नहीं करता है।

मुझे ऐसा लगता है कि इस मुद्दे को Apple ने Mac OS X Yosemite 10.10 ( 14A329r ) के साथ तय किया है । मैं सामान्य बीटा योसेमाइट चैनल (डेवलपर नहीं) पर हूं। गेट पुश /खींचें बिना किसी संशोधन के फिर से अपेक्षित रूप से काम करता है।


नहीं, मैं 14A329r पर डुप्लिकेट किए गए पर्यावरण चर का अनुभव कर रहा हूं, इसलिए यह उस बिल्ड पर तय नहीं किया गया है।
Zr40

@ Zr40 thx। तुम सही हो। किसी तरह Git धक्का अब काम करता है? मेरे लिए लेकिन गिट पुल अभी भी काम नहीं कर रहा है।
फ्रैंक ल्मर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.