git - त्रुटि: रीबेस के साथ खींच नहीं सकता: आपके पास अस्थिर परिवर्तन हैं




heroku pull (5)

मैंने एक परियोजना पर कुछ दोस्तों के साथ सहयोग करना शुरू कर दिया है और वे हेरोकू गिट भंडार का उपयोग करते हैं।

मैंने कुछ दिन पहले भंडार को क्लोन किया था और तब से उन्होंने कुछ बदलाव किए हैं इसलिए मैं नवीनतम अपडेट प्राप्त करने की कोशिश कर रहा हूं

मैंने यहां बताया गया git pull --rebase कमांड चलाया (क्या यह करने का सही तरीका है?): https://devcenter.heroku.com/articles/sharing#merging-code-changes

मुझे निम्नलिखित त्रुटि मिलती है:

$ git pull --rebase
Cannot pull with rebase: You have unstaged changes.
Please commit or stash them.

मेरा अनुमान है कि मैं कोड के साथ गड़बड़ कर रहा था और अब यह चाहता है कि मैं या तो प्रतिबद्ध या त्यागना चाहूंगा (क्या वह है जिसका मतलब है?) परिवर्तन। क्या यह हो रहा है? यदि ऐसा है तो मैं अपने द्वारा किए गए किसी भी बदलाव को त्यागना चाहूंगा और बस गिट रिपोजिटरी से अद्यतन कोड प्राप्त करूंगा।

क्या मैं कर सकता हूं के बारे में कोई विचार?


आप हमेशा कर सकते हैं

git fetch && git merge --ff-only origin/master

और आप या तो (ए) कोई परिवर्तन नहीं करेंगे यदि आपके पास अपरिवर्तित परिवर्तन हैं जो अपस्ट्रीम परिवर्तनों के साथ संघर्ष करते हैं या (बी) स्टैश / पुल / लागू होने के समान प्रभाव: आपको HEAD से नवीनतम परिवर्तनों और आपके असामान्य परिवर्तनों को छोड़ने के लिए एक रिबेस जैसा है।


जब अस्थिर परिवर्तन होता है क्योंकि गिट एक फ़ाइल पर ईओएल सम्मेलनों को ठीक करने का प्रयास कर रहा है (जैसा कि हमेशा मेरा मामला है), कोई भी स्टैशिंग या चेक-आउट या रीसेट करने से इसे दूर नहीं किया जाएगा।

हालांकि, अगर इरादा वास्तव में पुनर्स्थापित करना और अस्थिर परिवर्तन को अनदेखा करना है, तो मैं जो करता हूं वह स्थानीय रूप से शाखा को हटा देता है और फिर इसे फिर से जांचता है।

git checkout -f anyotherbranchthanthisone
git branch -D thebranchineedtorebase
git checkout thebranchineedtorebase

देखा! यह अभी तक मुझे असफल नहीं हुआ है।


यदि आप --autostash करते समय अपने कामकाजी बदलाव रखना चाहते हैं, तो आप --autostash उपयोग कर सकते हैं। documentation :

रीबेज शुरू करने से पहले, स्थानीय संशोधनों को दूर करें ( git-stash[1] देखें git-stash[1] ) यदि आवश्यक हो, और पूरा होने पर स्टैश लागू करें।

उदाहरण के लिए:

git pull --rebase --autostash

यह मेरे लिए काम करता है:

git fetch
git rebase --autostash FETCH_HEAD

git status , यह आपको दिखाएगा कि कौन सी फाइलें बदली हैं। चूंकि आपने कहा है कि आप परिवर्तनों को नहीं रखना चाहते हैं, आप परिवर्तन से छुटकारा पाने के लिए git checkout -- <file name> या git reset --hard कर सकते हैं।

अधिकांश भाग के लिए, गिट आपको बताएगा कि परिवर्तनों के बारे में क्या करना है। उदाहरण के लिए, आपके त्रुटि संदेश ने आपके परिवर्तनों को git stash लिए कहा। यह होगा अगर आप उन्हें रखना चाहते थे। खींचने के बाद, आप git stash pop और आपके बदलावों का पुन: लागू किया जाएगा।

git status में बदलावों से छुटकारा पाने का तरीका भी है कि फाइल को प्रतिबद्ध करने के लिए या नहीं किया गया है या नहीं।





pull