2011-08-04 11 views
6

मैं भंडार TortoiseSVN का उपयोग कर खींच लिया है से फ़ोल्डर .svn दूर करने के लिए। इसमें रूट और सभी उपफोल्डर में .svn फ़ोल्डर्स हैं। मैंने एक जिथब रिपोजिटरी बनाई है और पूरे भंडार को धक्का दिया है।कैसे GitHub रेपो

समस्या यह है कि मेरी स्थानीय प्रतिलिपि में मैं रेपो से .svn फ़ोल्डरों को नष्ट कर दिया और फिर परिवर्तन के लिए प्रतिबद्ध है। यह भंडार के पिछले संस्करण से फ़ोल्डर को दूर नहीं करता ...

मैं यहाँ से GitHub रेपो से संवेदनशील डेटा को हटाने के लिए कैसे पता:

http://help.github.com/remove-sensitive-data/

लेकिन अगर मैं इस का उपयोग मैं पालन करने के लिए इस प्रक्रिया में 10 से अधिक समय (और यह समय की ऐसी बर्बादी है कि ऐसा करने के लिए है) ... इसलिए मैं सोच रहा था कि किसी को भी मुझे बताओ कि एक एकल में पूरे रेपो से सभी .svn फ़ोल्डरों जाना नष्ट करने के लिए कर सकते हैं?

उत्तर

6

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

find . -name '.svn' | xargs git rm -rf --ignore-unmatch 

यह .svn फ़ोल्डर की सभी घटनाओं के लिए रिकर्सिवली खोज करता है और रिकर्सिवली उसे और उसकी सामग्री को हटा । --ignore-unmatch पैरामीटर गिट को चॉकिंग से रोकता है अगर उसे रिपोजिटरी में निर्दिष्ट फ़ाइल नहीं मिलती है।

करने के लिए अगली बात, ज़ाहिर है, अपने .gitnore को .svn जोड़ने के लिए इतना है कि आप गलती से कभी भी फिर से उन फ़ाइलों को ट्रैक करना आरंभ नहीं है।

4

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

find . -type d -name .svn | xargs git rm -rf --ignore-unmatch 
0

मैं हाल ही में मेरी खिड़कियां मशीन पर यह करने के लिए किया था। तुलनात्मक PowerShell कमांड यहाँ है। वहाँ शायद एक बेहतर तरीका है, लेकिन मैं के साथ पी एस सुंदर अनाड़ी हूँ:

gci -Recurse -filter ".svn" | ?{ $_.PSIsContainer } | Select-Object FullName | %{ git rm -rf --ignore-unmatch $_.FullName } 

GCI (Get-बाल-मद) सभी नाम ".svn" बातें, PSIsContainer जांच करता है कि इसकी एक निर्देशिका, का चयन मिल जाएगा -Object सिर्फ FullName विशेषता बाहर निकलने के लिए माना जाता है, और फिर Git rm- आरएफ आदेश एक foreach पाश के अंदर रखा गया है।