studio - git login



निर्देशिका से सभी गिट फ़ाइलों को हटा दें? (5)

मेरे पास संस्करण नियंत्रण के तहत एक फ़ोल्डर है। मैं इसे भेजने के लिए इसकी प्रतिलिपि बनाना चाहता हूं, लेकिन सभी .git निर्देशिकाओं और इसके नीचे की फ़ाइलों को शामिल नहीं करना चाहता हूं।

क्या उन सभी गिट फ़ाइलों को मैन्युअल रूप से हटाने के बजाय निकालने का कोई तरीका है?


Answer #1

.Git फ़ोल्डर केवल रेपो की मूल निर्देशिका में संग्रहीत है, उप-निर्देशिका जैसे सभी उप-निर्देशिका नहीं। जब तक आप Submodules का उपयोग नहीं कर रहे हैं, तब तक आपको केवल एक फ़ोल्डर को हटाने में सक्षम होना चाहिए ... फिर उनके पास भी एक होगा।


Answer #2

अगर कोई और इस विषय पर ठोकर खाता है - यहां एक और "एक आकार सभी फिट बैठता है" समाधान है।

यदि आप --exclude-vcs या .svn का उपयोग कर रहे हैं, तो आप tar के लिए --exclude-vcs विकल्प का उपयोग कर सकते हैं। यह विभिन्न संस्करण नियंत्रण प्रणालियों द्वारा आवश्यक कई अलग-अलग फ़ाइलों / फ़ोल्डर्स को अनदेखा कर देगा।

यदि आप इसके बारे में अधिक पढ़ना चाहते हैं, तो जांचें: http://www.gnu.org/software/tar/manual/html_section/exclude.html


Answer #3

एसवीएन या सीवीएस जैसे अन्य स्रोत नियंत्रण प्रणालियों के विपरीत, गिट परियोजना के हर उपनिर्देशिका की बजाय, एक ही निर्देशिका में अपने सभी मेटाडेटा को स्टोर करता है। तो बस रूट से .git हटाएं (या git-export जैसी स्क्रिप्ट का उपयोग करें) और आपको ठीक होना चाहिए।


Answer #4

तब भंडार के लिए cd

find . -name ".git*" -exec rm -R {} \;

सुनिश्चित करें कि गलती से एक सिंगल डॉट, स्लैश, तारांकन, या अन्य रेगेक्स वाइल्डकार्ड को पाइप न करें, या फिर rm खुशी से इसे हटा देगा।


Answer #5

लिनक्स में किसी फ़ोल्डर के तहत सभी .git निर्देशिकाओं को कैसे हटाएं।

इस खोज कमांड को चलाएं, यह वर्तमान फ़ोल्डर के तहत सभी .git निर्देशिका सूचीबद्ध करेगा:

find . -type d -name ".git" \
&& find . -name ".gitignore" \
&& find . -name ".gitmodules"

प्रिंटों:

./.git
./.gitmodules
./foobar/.git
./footbar2/.git
./footbar2/.gitignore

केवल 3 या 4 .git निर्देशिकाओं की तरह होना चाहिए क्योंकि गिट में केवल प्रत्येक प्रोजेक्ट के लिए एक .git फ़ोल्डर है। आप उपरोक्त में से प्रत्येक को अपने rm -rf yourpath को rm -rf yourpath कर सकते हैं।

यदि आप उन्हें एक आदेश में हटाने और खतरनाक रूप से रहने की तरह महसूस करते हैं:

//Retrieve all the files named ".git" and pump them into 'rm -rf'
//WARNING if you don't understand why/how this command works, DO NOT run it!

( find . -type d -name ".git" \
  && find . -name ".gitignore" \
  && find . -name ".gitmodules" ) | xargs rm -rf

//WARNING, if you accidentally pipe a `.` or `/` or other wildcard
//into xargs rm -rf, then the next question you will have is: "why is
//the bash ls command not found?  Requiring an OS reinstall.




git