2011-07-20 6 views
10

मैं नए बदलावों को धक्का देने की कोशिश कर रहा हूं, लेकिन मेरे पास एक विवादित फ़ाइल है। धक्का देने की कोशिश करने के बाद, मुझे निम्न त्रुटि मिलती है:गिट मुझे खींचने के लिए कह रहा है, फिर प्रतिबद्ध, फिर खींचो?

Merge the remote changes (e.g. 'git pull') before pushing again. See the 
'Note about fast-forwards' section of 'git push --help' for details. 

ठीक है, इसलिए हमें गिट पुल का उपयोग करने की आवश्यकता है। जब मैं प्रतिबद्ध करने के लिए कोशिश मैं पहली त्रुटि के लिए वापस जाने

error: Your local changes to the following files would be overwritten by merge: 
    db/profile_edit.php 
Please, commit your changes or stash them before you can merge. 

लेकिन,,: मैं git pull इस्तेमाल करने की कोशिश और उसके बाद मैं इस त्रुटि मिलती है। मुझे क्या करना चाहिए? रिमोट रेपो में बदलाव मेरी स्थानीय मशीन पर नए हैं। तो, मैं इसे एक diff टूल के साथ कैसे खोलूं और परिवर्तन कर सकता हूं और फिर गिट को बताऊंगा कि मैंने बदलाव किए हैं, इसलिए यह मुझे परिवर्तनों को धक्का देगी?

उत्तर

23

$ git pull --rebase 

करने के लिए तुम्हारा से पहले दूरस्थ परिवर्तन लाने के लिए, और उसके बाद के लिए प्रतिबद्ध की कोशिश करो। और देखें कि यह काम करता है या नहीं।

अगर यह काम नहीं करता है, ऐसा करें:

$ git stash 
$ git pull --rebase 
$ git stash pop 

stash पर अपने परिवर्तनों को सहेजने के लिए, लागू दूरदराज के अपने काम-भंडार के अंदर करता है, और फिर अंदर अपने परिवर्तन (stash में बचाया) लागू अपने काम-भंडार फिर से।

8

सबसे पहले, मुझे लगता है कि अगर आप git add पर git commit थे, तो आपका स्थानीय रेपो git pull करने के लिए पर्याप्त साफ होगा।

हालांकि, यदि परिवर्तन हो सकते हैं तो आप तब तक प्रतिबद्ध नहीं होना चाहते जब तक कि आप अपस्ट्रीम पर क्या हुआ, आप git stash का उपयोग कर सकते हैं। यह अस्थायी रूप से आपकी कार्यशील निर्देशिका को साफ़ कर देगा और आपके परिवर्तनों को सहेज लेगा, ताकि आप खींच सकें (मैं मर्ज पॉइंट से बचने के लिए git pull --rebase की अनुशंसा करता हूं - लेकिन यह एक व्यक्तिगत स्वाद मुद्दा है)। एक बार आपके ऊपर अपस्ट्रीम परिवर्तन किए जाने के बाद, आप git stash pop का उपयोग कर अपने स्थानीय संशोधन वापस प्राप्त कर सकते हैं। संघर्षों को साफ करने और अनावश्यक परिवर्तनों से छुटकारा पाने के बाद, आप जोड़ सकते हैं, प्रतिबद्ध कर सकते हैं, फिर आखिरकार धक्का दे सकते हैं।

+0

+1, अच्छी व्याख्या – sha256

5

आप स्वयं को आदेशों से भ्रमित कर रहे हैं।

git commit Git के डेटाबेस में परिवर्तनों को सहेजता है git pull दूरस्थ लाता है अपने रेपो

आप अप्रतिबद्ध परिवर्तन के साथ पुल की कोशिश कर रहे में करता है, तो Git करने के लिए कह रहा है उन पहले (या git stash उन्हें प्रतिबद्ध दूर) ताकि यह आपके स्थानीय परिवर्तनों को दूरस्थ लोगों के साथ विलय कर सके।

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