2015-03-18 12 views
9

0 के लिए चरणबद्ध परिवर्तनों में बदलाव नहीं करता है। मैं इस समस्या में एक रेल ऐप पर काम कर रहा हूं जिस पर मैं काम कर रहा हूं। मैं एक फीचर शाखा पर काम कर रहा था और हाल ही के मास्टर से रिबेस करना चाहता था। मैं निम्न कमांड भाग गया:Gemfile.lock हमेशा

$ git checkout master 
$ git pull --rebase 

अगर मैं अपने सुविधा शाखा को वापस चेकआउट करने की कोशिश मैं निम्नलिखित त्रुटि मिलती है:

Changes not staged for commit: 
    (use "git add <file>..." to update what will be committed) 
    (use "git checkout -- <file>..." to discard changes in working directory) 

    modified: Gemfile.lock 

मैं करने के लिए वापस Gemfile.lock समाधान के लिए निम्न आदेशों की कोशिश की है उनमें से कोई भी सफल होने के साथ aster:

$ git checkout -- Gemfile.lock 
$ git stash 
$ git reset HEAD --hard 

हर बार जब मैं एक नया Git आदेश मैं Gemfile.lock प्रतिबद्ध के लिए मंचन नहीं परिवर्तन होने के लिए वापस जाने चलाते हैं।

यहाँ मैं के साथ काम कर रहा हूँ पुस्तकालयों के निम्न संस्करण हैं:

$ git --version => 2.3.3 
$ bundler --version => 1.7.9 
+0

परिवर्तन क्या हैं? कुछ भी महत्वपूर्ण है? –

+0

कृपया 'मणि इंस्टॉल बंडलर' को फिर से चलाकर बंडलर को अपग्रेड करें। बंडलर 1.7.9 में कुछ बग हैं जो कुछ परिस्थितियों में 'Gemfile.lock' में अप्रत्याशित परिवर्तन कर सकती हैं। ये हाल के संस्करणों में तय किए गए हैं। केवल 'गिट' आदेशों को चलाने के दौरान इसका कारण क्या है, मुझे लगता है कि मैट बिल्ड्स का जवाब सबसे अच्छा है। –

उत्तर

0

कि चल रहे रेल आदेश या अन्य बंडल कार्यकारी आदेश चुपचाप अपने Gemfile.lock अद्यतन करेगा बार कर रहे हैं। मुझे लगता है कि आप कभी भी अपने गिट कमांड के बीच ऐसा कर रहे हैं। या आपके पास कुछ अजीब स्थापित है जो अदृश्यता से करता है।

(क्या यह अदृश्यता से आरवीएम कर सकता है? मुझे नहीं पता। मुझे लगता है कि आरवीएम सभी प्रकार की अजीब चीजें करता है और इसका उपयोग नहीं करता है।)।

किसी भी दर पर, यह तथ्य यह है कि यह हो रहा है कि यह कुछ और हो रहा है, जो कि आप चाहते हैं कि वह नहीं है - क्या आप निश्चित रूप से Gemfile और Gemfile.lock को एक साथ करने की कोशिश कर रहे हैं वास्तव में संगत हैं? आम तौर पर किसी भी समय एक जेमफाइल बदलता है, एक नया Gemfile.lock पाने के लिए बंडल इंस्टॉल चलाने के लिए बुद्धिमान है। यदि आप Gemfile.lock को करने की कोशिश कर रहे हैं जो वास्तव में जेमफाइल के साथ संगत नहीं है ... मुझे यकीन नहीं है कि आप ऐसा क्यों करना चाहते हैं, आम तौर पर मैं जेमफाइल और जेमफाइल चाहता हूं। किसी दिए गए प्रतिबद्धता में अनलॉक करें संगत।

एक सुराग प्राप्त करने के लिए क्यों कुछ (रहस्यमय) आपके Gemfile.lock को बदल सकता है, Gemfile पर एक गिट diff करें। यह देखने के लिए कि यह कैसे बदल गया है?

27

पृष्ठभूमि में कुछ प्रक्रिया चलनी चाहिए या Gemfile.lock को संशोधित करने वाले आपके खोल में गिट कमांड निष्पादित करने के कुछ दुष्प्रभाव होना चाहिए।

मैं आरवीएम के जादू से परिचित नहीं हूं (हालांकि यह व्यवहार्य लगता है); यहां कुछ और चीजें हैं:

  • रेल के हाल के संस्करणों में एक "वसंत" पृष्ठभूमि प्रक्रिया है जो चलती है। उस प्रक्रिया को गहन रूप से समाप्त करने के लिए spring stop (या bin/spring stop या bundle exec spring stop) चलाने का प्रयास करें।
  • इसी तरह यदि आपके पास रेल सर्वर, गार्ड, ज़ीउस, साइडकीक इत्यादि जैसी कोई अन्य रेल-संबंधित प्रक्रियाएं हैं, तो उन्हें बंद करने का प्रयास करें।
  • हो सकता है कि आप एक गिट प्री-प्रतिबद्ध हुक चला रहे हों। .git/hooks निर्देशिका देखें।
  • git किसी अन्य कमांड के लिए आपके खोल में उपनाम हो सकता है। खोल उपनामों की एक सूची देखने के लिए alias चलाएं।
  • आपका शेल प्रॉम्प्ट संकेतों में मौजूदा गिट स्थिति और शाखा नाम दिखाने जैसी चीजों को करने के लिए कोड निष्पादित कर सकता है। प्रॉम्प्ट को फिर से निकालने के लिए प्रत्येक शेल कमांड के बाद यह कोड निष्पादित किया जाएगा, और इसके दुष्प्रभाव हो सकते हैं। अपने .bashrc या .bash_profile देखें।
+9

धन्यवाद, मेरे लिए यह मुद्दा वसंत के साथ था। 'वसंत स्टॉप' के बाद मैं सफलतापूर्वक 'गिट चेकआउट - Gemfile.lock' – Brian

+2

हाँ सक्षम करने में सक्षम था। हमारे पास एक नई रेल 4.2 परियोजना पर एक ही मुद्दा था और यह वसंत था। बहुत उपयोगी! – jwadsack

+0

'स्प्रिंग स्टॉप' चलाने के बाद मुझे बाद में 'स्प्रिंग स्टार्ट' चलाना चाहिए? –

संबंधित मुद्दे