2011-07-28 18 views
20

में एक और निर्देशिका में/mv निर्देशिका मैं मैं dir2/करने के लिए निर्देशिका का नाम बदलना चाहते हैं एकप्रतिलिपि Git

dir1/एक बहुत फ़ाइलें और subdirecties शामिल है। मैंने कोशिश की

Git mv dir1/dir2/

मैं इस संदेश मिला:

fatal: renaming 'dir1' failed: Permission denied 

अद्यतन:

मैं खिड़कियों कमांड लाइन के लिए Git से भाग गया http://code.google.com/p/msysgit/
क्या सही आदेश है?

+0

इन आदेशों को निष्पादित करने के लिए आप किस ऑपरेटिंग सिस्टम का उपयोग कर रहे हैं? – dwmcc

+0

मैं विंडोज कमांड लाइन के लिए गिट से भाग गया http://code.google.com/p/msysgit/ – icn

उत्तर

9

आप मानक यूनिक्स उपकरण, या जो भी आपका ओएस है, का उपयोग कर सकते हैं। तो:

mv dir1 dir2 

काम करना चाहिए। बस यह सुनिश्चित करने के बाद कि आप इसे करने के बाद स्टेजिंग क्षेत्र में dir1 और dir2 दोनों जोड़ दें, ताकि आप परिवर्तन कर सकें।

कैसे परिवर्तन (एक बार किया) के लिए प्रतिबद्ध करने का एक उदाहरण हो सकता है:

git add dir1 dir2 && git commit dir1 dir2 

शायद यह भी करने के लिए अन्य तरीके हैं।

+4

मुझे पूरा यकीन है कि आप उन फ़ाइलों के संशोधन इतिहास को खो देंगे जिन्हें आप स्वतंत्र रूप से गिट के स्थानांतरित करते हैं। – Vince

+3

@Godmode: नहीं, गिट सामग्री आधारित है और फ़ाइल सामग्री के आधार पर पहचान का नाम बदलता है। – user518450

0

मैं साइगविन में गिट चला रहा हूं। मुझे तब तक एक ही समस्या थी जब तक मैंने निर्देशिका से अनचाहे फ़ाइलों को नामित नहीं किया। इसने ठीक से पूरा करने के लिए git mv की अनुमति दी।

यदि आप git status चलाते समय अपनी निर्देशिका में अनचाहे फ़ाइलों का नाम बदलना चाहते हैं तो आपको उन फ़ाइलों को अस्थायी रूप से कहीं और स्थानांतरित करना होगा और git mv के बाद उन्हें वापस ले जाना होगा।

20

यह भी हो सकता है कि निर्देशिका (या फ़ाइल) के भीतर किसी अन्य प्रोग्राम द्वारा उपयोग किया जा रहा है, जो आपको उस फ़ोल्डर के साथ कुछ भी करने से रोकता है। केवल विंडोज़ पर, जाहिर है।

Process Explorer का उपयोग करें यदि आप अनिश्चित हैं कि कौन सा प्रोग्राम उस निर्देशिका/फ़ाइल पर कब्जा कर लिया गया है।

+0

यह मेरे लिए समस्या का बिल्कुल कारण था। मुझे लगता है कि यह स्वीकार किए गए उत्तर से बेहतर जवाब है क्योंकि गिट के स्वतंत्र रूप से निर्देशिका को स्थानांतरित करने से आप उस निर्देशिका में किसी भी फाइल के संशोधन इतिहास को खो देंगे जिससे आप आगे बढ़ रहे हैं। इसके अलावा, क्या ओएस की निर्देशिका में लॉक होने पर यह असफल नहीं होगा? – Vince

+0

यह मेरी समस्या भी हल कर दिया। TGitCache.exe फ़ोल्डर को पकड़ने की प्रक्रिया थी।मुझे संदेह है कि टीजीआईटी कैश गिट कंट्रोल के तहत हर फ़ोल्डर को रखेगा, नाम बदलने का आदेश लगभग 100% काम नहीं कर रहा है। –

+0

इसने मेरी समस्या भी हल की! बीटीडब्लू, मैं आमतौर पर एक प्रक्रिया द्वारा लॉक की गई फ़ाइलों को अनलॉक करने के लिए [अनलॉकर] (http://emptyloop.com/unlocker/) का उपयोग करता हूं। –

2

दोनों स्रोत और लक्ष्य निर्देशिका को गिट भंडार में जांचने की आवश्यकता है। यदि आप dir1 को dir2 पर ले जा रहे हैं और dir2 अभी तक प्रतिबद्ध नहीं किया गया है, तो आपको यह त्रुटि संदेश मिलेगा।

0

मुझे एक ही समस्या थी। TGitCache.exe वह प्रक्रिया थी जो फ़ोल्डर को पुनर्नामित करने से रोक रही थी। TaksExplorer का उपयोग करके मैंने प्रक्रिया को मार दिया है और गिट बैश कमांड प्रॉम्प्ट से कमांड चलाया है।