2013-10-08 6 views
10

मैंने अपनी कार्यशील निर्देशिका में फ़ाइलों को संशोधित किया था और एक svn अद्यतन किया था। अद्यतन विवादों के बिना किया गया था।एक svn अद्यतन पूर्ववत करने के लिए कैसे करें?

मैं कार्य निर्देशिका निर्देशिका सामग्री को उस स्थिति में वापस करने में सक्षम होना चाहता हूं जो यह svn अद्यतन से ठीक पहले था।

कारण यह है कि मैं साझा svn भंडार के समानांतर में एक स्थानीय गिट भंडार बनाए रखता हूं। मैं svn अद्यतन करने से पहले अपने स्थानीय परिवर्तनों को प्रतिबद्ध करने के लिए भूल गया। अब मेरी कार्यशील निर्देशिका में स्थानीय परिवर्तनों को svn अद्यतन से होने वाले परिवर्तनों के साथ मिश्रित किया गया है। यदि मैं प्रतिबद्ध हूं, तो सभी परिवर्तन एक परमाणु परिवर्तन के रूप में दिखाई देंगे। मेरी इच्छा थी कि वे अलग होंगे। यदि मैं अद्यतन को वापस कर सकता हूं और svn अद्यतन से पहले काम करने वाली निर्देशिका की सामग्री को संरक्षित कर सकता हूं, तो मैं ऐसा कर सकता था।

+0

मैं किसी अन्य तरीके से इसे हल में हो जाएगा। स्थानीय परिवर्तन उन फ़ाइलों में थे जो अद्यतन से प्रभावित नहीं थे। तो गिट स्टेज मैकेनिज्म के लिए धन्यवाद, मैं केवल स्थानीय रूप से संशोधित फ़ाइलों को प्रतिबद्ध करता हूं, फिर दूसरी प्रतिबद्धता में svn अद्यतन द्वारा संशोधित सभी अन्य फ़ाइलों को संशोधित करता है। मैं भाग्यशाली था। – chmike

+0

हां, गिट चरण रास्ता बाहर है। भले ही फ़ाइलों को _were_ प्रभावित किया गया हो, फिर भी आप अलग-अलग परिवर्तन और आपके परिवर्तनों को अलग करने के लिए 'svn diff' और' git apply' का उपयोग कर सकते हैं। –

+1

किसी भी मामले में मैं भविष्य में 'git-svn' का उपयोग करने की सलाह दूंगा।यह आयात और निर्यात को विश्वसनीय रूप से निर्यात कर सकता है और अतिरिक्त रूप से स्थानीय पैच कतार के रूप में उपयोग किया जा सकता है (आप स्थानीय शाखा पर कई काम कर सकते हैं और उनमें से कुछ केवल इंटरैक्टिव रीबेस का उपयोग करके विचलन के लिए धक्का दे सकते हैं)। –

उत्तर

4

यह संभव नहीं है। अद्यतन से पहले राज्य भूल गया है।

git apply का उपयोग करके इसे इंडेक्स पर लागू करने के लिए, (आपके परिवर्तन) और सब कुछ करने से (पुल से परिवर्तन) करने के लिए आप उपversण भिन्न बनाकर परिवर्तन को अलग कर सकते हैं।

यह आपातकालीन समाधान है। मेरा सुझाव है कि आप git-svn पर स्विच करें, जो भविष्य में आपके लिए इस तरह की चीजों को संभालेगा।

2

"संस्करण में अपडेट करें" निष्पादित करें, ताकि आप अपनी स्थानीय फ़ाइल को स्थिर संस्करण में बदल दें और फिर पुनः प्रतिबद्ध करें। इस तरह आप सभी स्थानीय परिवर्तन खो देते हैं।

+4

मेरे सभी स्थानीय परिवर्तनों को खोना वह है जो मैं टालना चाहता था। – chmike

+0

स्पष्ट रूप से आपके मामले में, यदि स्थानीय बदली गई फ़ाइल संघर्ष में नहीं है, तो यह ऑपरेशन अनुपयोगी है। तो, तुम भाग्यशाली हो! ;) एक अच्छा दिन है –

0

यह लिनक्स उपयोगकर्ताओं के लिए है।

मान लीजिए कि निम्नानुसार संशोधन।

हेड - 20 सिर के पिछले संशोधन - 18, 17, 15, 14, 10, 9,8।

अपनी src निर्देशिका पर जाएं। svn merge -r 17:18 $ url

$ url अपने svn बेस के लिए उपयोग करें।

6

मैं इस सवाल को मारता रहता हूं, और इसमें वास्तव में "svn अद्यतन को पूर्ववत करने के तरीके" का सरल उत्तर शामिल नहीं है? सवाल।

तो अन्य लोगों के लाभ, व्याख्या करने योग्य मामला साथ जहाँ आप सिर्फ एक अद्यतन रोल बैक करना चाहते हैं के लिए:

पहले से लॉग की जाँच करें:

svn log | less 

यह आपको संशोधन संख्या दे देंगे (उदाहरण के लिए 957) कि आप वापस जाना चाहते हैं। तब:

svn up -r 957 
+4

यह उत्तर एक संशोधित कार्य निर्देशिका के मामले को अनदेखा करता है। –

+0

सच @RobertPollak लेकिन यह प्रश्न के शीर्षक से उत्पन्न प्रश्न का उत्तर देता है ... – ErichBSchulz

+0

डाउनवॉटिंग, क्योंकि यह मूल प्रश्न का उत्तर नहीं देता है (जिसमें पहली वाक्य संशोधित फ़ाइलों के बारे में नोट है)। यह एक अन्य प्रश्न का उत्तर होगा "एक विशिष्ट संशोधन के लिए कैसे अपडेट करें"। संशोधित फाइलें होने पर यह उत्तर काम नहीं करेगा, और इसके बारे में कोई भी उल्लेख नहीं है। –

-1

मामले में, अगर वहाँ थे कोई विरोध अद्यतन के दौरान हुई, वहाँ उपलब्ध आपकी फ़ाइल और संशोधन फ़ाइल की एक प्रतिलिपि अपने रीसायकल बिन

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