2009-09-30 20 views
65

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

  1. :

    मैं निम्नलिखित जारी:।

    git remote update 
    git checkout HEAD 
    git pull origin HEAD 
    

    यह फ़ाइलों यह होना चाहिए के सभी नष्ट कर दिया, लेकिन नहीं निर्देशिका फाइलों में थे

    दो सवाल यह निर्देशिका को हटा नहीं है?

  2. क्या कोई गिट कमांड है जिसे मैं वर्तमान स्थिति में हटाने के लिए जारी कर सकता हूं?
+0

क्या आप वाकई हेड चाहते हैं? – innaM

+0

सहमत हैं, गिट चेकआउट HEAD कुछ भी नहीं करता है, क्योंकि HEAD वर्तमान में चेक-आउट प्रतिबद्धता को इंगित करता है। आप शायद दोनों मामलों में मास्टर के लिए जा रहे थे। – Cascabel

+0

ठीक है, हेड वास्तव में खाली निर्देशिका को हटाने के अपवाद के साथ सब कुछ अद्यतन किया। जैसे मैंने कहा, मैं गिट करने के लिए नया हूँ। – mculp

उत्तर

132

गिट निर्देशिकाओं को ट्रैक नहीं करता है, इसलिए यह मर्ज या अन्य परिवर्तन के परिणामस्वरूप खाली होने वाले लोगों को नहीं हटाएगा। हालांकि, आप अवांछित निर्देशिकाओं को हटाने के लिए git clean -fd का उपयोग कर सकते हैं (-fd ध्वज का अर्थ f अनचाहे फ़ाइलों और डी निर्देशिकाओं को हटाने के लिए) का उपयोग कर सकते हैं।

+4

मैं उलझन में हूँ। फिर जब मैंने बदलाव किए/धक्का दिया तो निर्देशिका मेरे गिटहब रेपो से क्यों हटा दी गई? – mculp

+1

आपकी कार्यशील प्रतिलिपि में निर्देशिकाओं में अनचाहे फ़ाइलें (छिपी हुई अनचाहे फ़ाइलों सहित) हो सकती है, और इस प्रकार वे खाली दिखाई दे सकते हैं लेकिन वास्तव में नहीं हैं, इसलिए गिट ने उन्हें हटाया नहीं है। निश्चित रूप से 'गिट क्लीन' होगा। – mipadi

+0

आदेश के लिए धन्यवाद। उन्होंने उन्हें साफ कर दिया। हालांकि, मुझे अभी भी समझ में नहीं आता है कि उसने एक प्रतिबद्ध/पुश पर निर्देशिका क्यों हटा दी लेकिन चेकआउट/पुल पर नहीं। निर्देशिका में कोई छिपी हुई या अप्रयुक्त फ़ाइलें नहीं थीं। – mculp

-1

Git निर्देशिका वर्तमान में ट्रैक नहीं करता है (git wiki देखें), है, आप न तो खाली निर्देशिका में जोड़ सकते हैं और न ही निर्देशिका है कि खाली अंत हटाने git होगा। (संपादित करें: धन्यवाद, Manni, मैं गलत था आप खाली निर्देशिका नहीं जोड़ सकते हैं, लेकिन Git निर्देशिका है कि खाली हो जाते निकाल देंगे क्योंकि उनकी नज़र रखी सामग्री नष्ट कर दिया गया !।)

के रूप में खाली निर्देशिका को हटाने का आदेश: जो आपके ऑपरेटिंग सिस्टम पर निर्भर करता है।

लिनक्स के लिए आप इस्तेमाल कर सकते हैं, उदाहरण के लिए,

find -depth -type d -empty -exec rmdir {} \; 

हालांकि, इस सभी खाली निर्देशिका निकाल देंगे!

+1

विकी पेज कहता है कि गिट आपके लिए खाली निर्देशिका नहीं बनाता है। यह ** ** नहीं कहता है कि यह खाली निर्देशिका को हटा नहीं देगा। मेरे लिए क्या काम करना चाहता है। – innaM

+0

@janko, असल में, गिट मेरे लिए पूरी तरह से खाली निर्देशिका को हटाने में विफल रहा। –

2

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

Git किसी भी निर्देशिका कि इसलिए यदि आप छिपा या तो नजरअंदाज कर दिया फ़ाइलों है सिर्फ इसलिए कि Git को हटा पिछले कि निर्देशिका से फ़ाइल पर नज़र रखी जरूरी नहीं कि Git में सक्षम हो जाएगा, पूरी तरह से खाली नहीं कर रहे हैं नहीं निकाला जाएगा उस निर्देशिका को हटाने के लिए। गिट यह एक त्रुटि स्थिति नहीं मानता है, इसलिए इसके बारे में शिकायत नहीं होगी।

+0

My GitHub repo में निर्देशिका नहीं है। जब मैंने प्रतिबद्ध किया, तो उसने निर्देशिकाओं को सही ढंग से हटा दिया। हालांकि, जब मैं चेकआउट/खींचता हूं तो यह केवल फाइलों को हटा देता है। निर्देशिका खाली हैं। $ ls -al कुल 8 drwxr-XR-एक्स 2 mculp mculp 4096 सितं, 23 15:43 ./ drwxr-XR-x 8 mculp mculp 4096 सितं, 30 10:51 ../ – mculp

+1

मैं नहीं कर रहा हूँ काफी सुनिश्चित करें कि "स्विच हेड टू मास्टर" द्वारा आपका क्या मतलब है, मुझे लगता है कि आपका मतलब है "गिट चेकआउट मास्टर" "लेकिन अधिकांश लोग केवल" मास्टर से स्विच/चेक आउट "कहेंगे। वैसे भी, जब गिट ने कहा 'पहले से ही अद्यतित।' इसका मतलब है कि उसने कुछ भी नहीं किया। गिट केवल उन्हीं निर्देशिकाओं को हटा देगा जो इसे * खाली * बनाता है। –

+0

खराब शब्द। मैंने "हेड" को "मास्टर" में बदल दिया क्योंकि कुछ लोगों ने टिप्पणियों में सुझाव दिया है। – mculp

1

गिट निर्देशिकाओं, फ़ाइलों (उनके पथ के साथ) को ट्रैक नहीं करता है। गिट उन पथों के लिए सभी निर्देशिकाएं बनाता है यदि वे अभी तक मौजूद नहीं हैं (ठंडा!), हालांकि यह नहीं उन्हें हटा दें यदि पथ में निहित सभी फ़ाइलें स्थानांतरित या हटा दी गई हैं (ठंडा नहीं है ... लेकिन कारण हैं)।

समाधान (एक बार आप खींच लिया है/मर्ज किए गए तेजी से अग्रेषित /):

git stash --include-untracked 
git clean -fd 
git stash pop 

आप नहीं stashclean से पहले, आप अपने सभी ट्रैक न किए गए फ़ाइलें (अपरिवर्तनीय) खो देंगे करते हैं।

नोट: चूंकि यह सभी अनदेखी फ़ाइलों को भी साफ़ करता है, इसलिए आपको परियोजना मेटाडेटा (उदा: ./gradlew eclipse) को फिर से बनाने के लिए अपनी कुछ बिल्ड स्क्रिप्ट को फिर से चलाने की आवश्यकता हो सकती है। यह उन निर्देशिकाओं को भी हटा देता है जो खाली हैं और जो कभी भी गिट फाइलों के पथ का हिस्सा नहीं थे।

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