2011-08-12 10 views
6

मैंने हाल ही में git filter-branch --subdirectory-filter deep/in/my/project का उपयोग करके मेरे भंडार (bigproj में रहने) को विभाजित किया। फिर, मैंने .git निर्देशिका deep/in/my/project पर ले जाया।गिट फ़िल्टर-शाखा के बाद स्टैश रखें - subdirectory-filter

[email protected]{0}: filter-branch: rewrite 

मैं इस गुप्त कोष में नहीं छोड़ सकते हैं, के रूप में मैं यह त्रुटि (git stash drop के बाद) मिलता है:

refs/[email protected]{0}: not a valid stashed state 

अब, गुप्त कोष में एक अजीब राज्य है, जहां शीर्ष गुप्त कोष में कुछ की तरह है में है

अब, अगर मुझे स्टैश @ {1} का रिफिड पता है, तो भी इसमें bigproj पदानुक्रम में फ़ाइलों के लिए diffs शामिल हैं। क्या स्टैश डेटा को फिर से लिखना संभव है, ताकि इसमें केवल deep/in/my/project पदानुक्रम से संबंधित फाइलें हों?

उत्तर

0

मुझे लगता है कि .git निर्देशिका को स्थानांतरित करने से पहले मुझे लगता है कि आपको drop और pop करना है। आप स्थानांतरित होने के बाद भी इसे फिर से छीन सकते हैं।

+0

नहीं, यह काम नहीं करता है। यहां तक ​​कि अगर मैं 'git' dir को स्थानांतरित करने से पहले 'गिट स्टैश ड्रॉप' का प्रयास करता हूं, तो मुझे भी वही त्रुटि मिलती है। फिर से छेड़छाड़ से आपका क्या मतलब है? –

+1

हम्म, स्पष्ट रूप से 'स्टैश' कुछ कारणों से फ़िल्टर-शाखा प्रक्रिया में नहीं टिकता है। आपको शायद अपने unfiltered स्थिति पर वापस जाना होगा और इसके बजाय केवल उन परिवर्तनों को प्रतिबद्ध करना होगा, फिर फ़िल्टर के बाद उन्हें 'गिट रीसेट HEAD ~ 1' फिर से निष्कासित करने के लिए रीसेट करें। –

3

git filter-branch का उपयोग करने के बाद मुझे भी यही समस्या थी। निम्न आदेश पूरी तरह से छेड़छाड़ करता है और इसलिए git filter-branch द्वारा बनाई गई प्रविष्टियों को भी हटा देता है। चेतावनी! कि इस आदेश को कॉल करने के बाद सभी स्टैश किए गए परिवर्तन पुनर्प्राप्त करना असंभव हो सकता है, इसलिए आदेश को कॉल करने से पहले अन्य सभी स्टैश किए गए राज्यों को लागू करना सुनिश्चित करें।

git stash clear 
+0

लेकिन मैं पूरे छेड़छाड़ को मारना नहीं चाहता, मैं इसे रखना चाहता हूं, बस उन हिस्सों के बिना जो रेपो में नहीं हैं। –

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