2009-08-11 9 views
11

मेरे पास गिट का उपयोग करके एक प्रोजेक्ट है जहां मैंने निर्देशिका का नाम बदलने के लिए मास्टर से ब्रांच किया है।गिट: शाखा में एक निर्देशिका का नाम बदलना

शाखा में नाम अपेक्षित के रूप में काम करता है। जब मैं मास्टर शाखा में वापस जाता हूं तो निर्देशिका का मूल नाम होता है, लेकिन उस नाम के साथ एक खाली निर्देशिका पेड़ भी है जिसे मैंने शाखा में बदल दिया है।

क्या यह अपेक्षित व्यवहार है? क्या मुझे एक कदम याद आ रहा है?
क्या मुझे इन खाली निर्देशिका पेड़ को प्रकट होने की आवश्यकता है?

मुझे पता है कि गिट खाली निर्देशिकाओं को ट्रैक नहीं करता है और यह यहां एक कारक हो सकता है।

मेरे वर्तमान कार्यप्रवाह है:

# create and checkout a branch from master 
/projects/demo (master) 
$ git checkout -b rename_dir 

# update paths in any affected files 

# perform the rename 
/projects/demo (rename_dir) 
$ git mv old_dir new_dir 

# add the modified files 
/projects/demo (rename_dir) 
$ git add -u 

# commit the changes 
/projects/demo (rename_dir) 
$ git commit -m 'Rename old_dir to new_dir' 

मैं इस बात के लिए मिलता है और सब कुछ उम्मीद है के रूप में:

# old_dir has been renamed new_dir 
/projects/demo (rename_dir) 
$ ls 
new_dir 

मुद्दा आता है जब मैं मास्टर के लिए वापस स्विच:

/projects/demo (rename_dir) 
$ git checkout master 

# master contains old_dir as expected but it also 
# includes the empty directory tree for new_dir 
/projects/demo (master) 
$ ls 
old_dir new_dir 

new_dir एक खाली निर्देशिका पेड़ है, इसलिए गिट इसे ट्रैक नहीं करेगा - लेकिन यह वहां बदसूरत है।

+0

FWIW, मुझे यह व्यवहार 1.6.3.1 के साथ नहीं मिलता है: मास्टर के अंतिम चेकआउट के बाद new_dir गायब हो गया है। आपके द्वारा कौन सा संस्करण उपयोग किया जा रहा है? –

+0

मैं msysgit 1.6.4 – jmohr

+0

का उपयोग कर रहा हूं क्या कोई छुपा हुआ अनचाहे है। * New_dir में फ़ाइलें? –

उत्तर

10

हां, आप इसे हटा सकते हैं। निर्देशिका को हटाने के लिए आप git clean -d का भी उपयोग कर सकते हैं।

+0

धन्यवाद - यह एक उपयोगी आदेश है जिसे मुझे पता नहीं था। – jmohr

1

यह संभावना है कि आपके पास नई निर्देशिका में छिपी हुई फ़ाइलें हों। "ls -a newdir"

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