2010-06-11 9 views
229

मैं काम कर पेड़ राज्य निम्नलिखित हैGit: पूर्ववत नहीं कर सकते स्थानीय परिवर्तन (त्रुटि: पथ ... मर्ज ना किए गए है)

$ git status foo/bar.txt 
# On branch master 
# Unmerged paths: 
# (use "git reset HEAD <file>..." to unstage) 
# (use "git add/rm <file>..." as appropriate to mark resolution) 
# 
#  deleted by us:  foo/bar.txt 
# 
no changes added to commit (use "git add" and/or "git commit -a") 

फ़ाइल foo/bar.txt है और मैं "अपरिवर्तित राज्य" करने के लिए इसे प्राप्त करना चाहते हैं फिर से ('SVN वापस लाएं' के समान):

$ git checkout HEAD foo/bar.txt 
error: path 'foo/bar.txt' is unmerged 
$ git reset HEAD foo/bar.txt 
Unstaged changes after reset: 
M  foo/bar.txt 

अब यह भ्रामक हो रही है: दोनों वर्गों में एक ही फाइल

$ git status foo/bar.txt 
# On branch master 
# Changes to be committed: 
# (use "git reset HEAD <file>..." to unstage) 
# 
#  new file: foo/bar.txt 
# 
# Changed but not updated: 
# (use "git add <file>..." to update what will be committed) 
# (use "git checkout -- <file>..." to discard changes in working directory) 
# 
#  modified: foo/bar.txt 
# 

, ne डब्ल्यू और संशोधित? मुझे क्या करना चाहिए?

+1

काश कोई समझा सकता है कि कैसे हम इस स्थिति में मिलता है, * क्यों * ऐसा होता है, और क्यों समाधान काम करता है। –

उत्तर

389

आपने इसे गलत तरीके से किया है। आप स्थानीय परिवर्तनों को वापस करने के लिए फ़ाइल को अस्थिर करने के लिए पहले, रीसेट करने के लिए पहले रीसेट करने के लिए हैं।

इस प्रयास करें:

$ git reset foo/bar.txt 
$ git checkout foo/bar.txt 
+0

धन्यवाद; एक जादू की तरह काम किया! मुझे प्रतिबद्ध करना था (_not_ -A arg के साथ, प्रासंगिक परिवर्तन पहले से ही चरणबद्ध थे) और फिर मैं सामान्य की तरह धक्का/खींचने में सक्षम था। – Patrick

+15

मेरे लिए यह आवश्यक है:
$ गीट रीसेट - foo/bar.txt
$ गिट चेकआउट - foo/bar.txt
( – Jan

+0

के बीच अतिरिक्त "-" पर ध्यान दें मेरे लिए, गिट रीसेट रीसेट * सभी * फाइलें, सिर्फ सूचीबद्ध नहीं .. क्या मैंने कुछ गलत किया? – Zds

-3
git checkout foo/bar.txt 

क्या आपने कोशिश की? (एक HEAD कीवर्ड के बिना)

मैं आमतौर पर इस तरह अपने परिवर्तनों को वापस करता हूं।

+0

मर्ज के बीच में 'चेकआउट' का प्रयास करते समय विशिष्ट त्रुटि: '$ गिट सह पथ/से/फ़ाइल' = परिणाम => ' त्रुटि: पथ 'पथ/से/फ़ाइल' अनमोल किया गया है => , पहले चलाएं: '$ गिट रीसेट पथ/से/फ़ाइल', और फिर 'गिट चेकआउट पथ/से/फ़ाइल' काम करना चाहिए। – michael

+0

हेड निर्दिष्ट नहीं है कि इंडेक्स से गिट चेकआउट चेक आउट करेगा, जो एक कमजोर ऑपरेशन है (सामग्री स्रोत हेड की बजाय इंडेक्स है)। इसके अलावा मुझे नहीं लगता कि इस मामले में एक अंतर आता है - विशिष्ट समस्या के साथ सवाल बताता है। क्या आपने * कोशिश की? – Kissaki

-4

मैं git stash सब 'गंदा' राज्यों के अस्थायी निपटने के लिए बहुत उपयोगी हैं।

+4

स्टैश काम नहीं करता है जब आपके पास अनमोल परिवर्तन होते हैं – Rob

+3

यदि आपको यह उपयोगी लगता है, तो कृपया इस ठोस मामले में यह कैसे मदद करेगा इस बारे में एक स्पष्टीकरण दें। आप इसका इस्तेमाल कैसे करेंगे? – Kissaki

9
git checkout origin/[branch] . 
git status 

// नोट डॉट (।) अंत में। और यह सब अच्छा

21

होगा यह मेरे लिए पूरी तरह से काम किया:

$ git reset -- foo/bar.txt 
$ git checkout foo/bar.txt 
संबंधित मुद्दे