स्थानीय सम्पादनों को पुन: प्रकाशित किए बिना पूर्ववत करें


157

मैंने गलती से भाग लिया svn add *और फाइलों का एक गुच्छा जोड़ा जो रिपॉजिटरी में नहीं होना चाहिए। मेरे पास कुछ फ़ाइलों में स्थानीय संपादन भी हैं जिन्हें मैं रखना चाहता हूं। क्या svn addस्थानीय संपादनों को देखे बिना केवल पूर्ववत करने का एक सरल तरीका है ? मुख्य सुझाव जो मैं Google पर देख रहा हूं svn revert, वह माना जाता है कि यह स्थानीय संपादन को पूर्ववत करता है।

जवाबों:


282

यह होगा:

svn rm --keep-local

मेरे साथ भी ठीक वैसा ही हुआ था। :-P

कई लोगों ने टिप्पणी की है कि आपको इसका उपयोग करना चाहिए:

svn rm --keep-local FILENAME

एक या कई फाइलों पर कमांड को लागू करने के लिए, सब कुछ के बजाय, जो अनपेक्षित दुष्प्रभाव हो सकते हैं।


1
मेरे लिए इसका कोई प्रभाव नहीं था। मैंने बेस फ़ोल्डर से ऊपर (अनुगामी अवधि सहित) कोड चलाया। यकीन नहीं होता कि मुझे कुछ याद आ रहा है।
zzz

8
ध्यान दें कि आपको फ़ाइल का नाम कमांड में जोड़ना होगा, ताकि वह ऐसा हो svn rm --keep-local FILENAMEFILENAMEएक से अधिक फ़ाइलों मैच के लिए * का उपयोग कर सकते हैं (यदि आप एक पैटर्न के लिए भाग्यशाली पर्याप्त हैं)।
एडम बदुरा

4
चेतावनी! - svn बाहरी का उपयोग करते समय इस कमांड का उपयोग करने के साथ ही सभी संलग्न बाह्य
उपकरणों

2
यदि आप ऐसा करते हैं, तो क्या रेपो से विचाराधीन फ़ाइल को हटाना शामिल नहीं होगा?
jwg

1
//, मेरे पास jwg जैसा ही सवाल है। मैंने SVN नियंत्रित फ़ाइल में कुछ संपादन किए हैं। मैं उन संपादनों को स्थानीय स्तर पर रखना चाहता हूं। हालाँकि, मैं फ़ाइल को रिपॉजिटरी से पूरी तरह से हटाना नहीं चाहता। मैं सिर्फ फ़ाइल के लिए अपने स्थानीय संपादन पुश नहीं करना चाहता।
नाथन बसानी

34

यदि वे फाइलें एक निर्देशिका के अधीन हैं जो अभी तक प्रतिबद्ध नहीं हैं, तो आप पूरी निर्देशिका सामग्री को अगली प्रतिबद्ध से हटा सकते हैं:

svn delete --keep-local /path/to/directory

हालाँकि, यदि वे फाइलें पहले से ही रिपॉजिटरी में हैं और अब उनमें परिवर्तन हैं, जिन्हें आप नहीं करना चाहते हैं, तो आप चेंजलगिस्ट का उपयोग करके बाकी फाइलों को कमिट कर सकते हैं:

svn changelist somename /file/to/be/committed
svn commit --changelist somename

7

आप निम्न तरीके से अपने चेकआउट को ठीक कर सकते हैं:

  1. अपनी स्थानीय फ़ाइलों का बैकअप लें
  2. SVN चेकआउट वापस करें
  3. फ़ाइलों को पुनर्स्थापित करें

-

rsync -av --exclude .svn/ YOURDIR/ YOURDIR.bak
svn revert -R YOURDIR
rsync -av YOURDIR.bak/ YOURDIR 

अंतिम कमांड हमेशा एक अतिरिक्त निर्देशिका स्तर बनाता है, अर्थात के साथ समाप्त होता है YOURDIR/YOURDIR/, हालांकि मुझे लगता है कि मुद्दा प्रारंभिक बैकअप कमांड बनाने में है YOURDIR.bak/YOURDIR/
जेम्स

इससे बचने के लिए rsync को स्रोत निर्देशिका पर एक अनुगामी स्लैश की आवश्यकता होती है। मैंने उत्तर संपादित किया।
ब्राइस एम। डेम्पसे

3

मेरे पास एक ही समस्या थी, मैं गलती से एक / निर्देशिका जोड़ देता हूं svn addजिसमें बायनेरिज़ और संकलित फ़ाइल शामिल है। यह आदेश वास्तव में निर्देशिका को हटा देता है।

svn rm --force <directory-name>

मेरे मामले में मुझे निर्देशिका की आवश्यकता नहीं है इसलिए इसे हटाना सुरक्षित था। यदि आप कमांड को लागू करने से पहले फ़ाइलों और निर्देशिकाओं को सहेजना चाहते हैं, तो उन्हें कॉपी करने के बाद एक जगह पर रखें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.