मैं एक फ़ोल्डर में सभी फ़ाइलों को पुन: स्थानांतरित करने के लिए git और bash का उपयोग कैसे करूंगा, जिसका नाम `n` अप वन डायरेक्टरी 'नाम है।


0

मैं एक मौजूदा परियोजना के पुनर्गठन पर काम कर रहा हूं। उनके पास निम्नलिखित अजीब संरचना थी।

src
-main
--app
---item
----src
-----Item.coffee
---other
----src
-----Other.coffee

मैं इन सभी फ़ाइलों को git में स्थानांतरित करना चाहता हूं, इसलिए Item.cfish, आदि अब नीचे है ...

src
-main
--app
---item
----Item.coffee
---other
----Other.coffee

इसके लिए उचित बैश / Git कमांड क्या है?

जवाबों:


2

आप कितनी फाइलें घुमा रहे हैं? जब तक आप दर्जनों / सैकड़ों / हजारों फ़ाइलों के बारे में बात कर रहे हैं, बस शारीरिक रूप से फ़ाइल को जीयूआई के माध्यम से या हाथ से स्थानांतरित करें mv नए स्थान पर कमांड - और Git इस तथ्य का पता लगाएगा कि फाइल क्या थी:

  1. पुराने स्थान से हटा दिया गया।
  2. नए स्थान पर एक नई फ़ाइल है।

इसलिए नई फ़ाइलों को जोड़ने के लिए बस एक करें git add * फ़ाइलों के ले जाने के बाद आपके प्रोजेक्ट की जड़ में, एक कमिट करें और Git बाकी को हैंडल करेगा जिसमें यह नोट करना शामिल है कि जो फाइल एक जगह थी वह अब दूसरी जगह है।

और अगर किसी तरह आप कर रहे हैं दर्जनों / सैकड़ों / हजारों फ़ाइलों के बारे में बात कर रहे हैं तो आपको बस फ़ाइलों को स्थानांतरित करने के लिए बैश में कुछ स्क्रिप्ट करने की आवश्यकता होगी और फिर वही करें git add * और प्रतिबद्ध प्रक्रिया और सभी अच्छे होने चाहिए।

इस तरह से एक बैश स्क्रिप्ट को समाप्त होने वाली सभी वस्तुओं को स्थानांतरित करने के लिए काम करना चाहिए *.coffee पेड़ में एक निर्देशिका का विस्तार करें चाहे कितना भी गहरा घोंसला हो:

find . -name '*.coffee' |\
  while read item_path
  do
    item_dirname=$(dirname "${item_path}");
    mv ${item_path} ${item_dirname}/..;
  done

पुनश्च: किसी भी बिंदु पर आपको कभी भी उपयोग नहीं करना चाहिए git rm इस तरह की प्रक्रिया के लिए। बस फ़ाइलों को स्थानांतरित करें, उपयोग करें git add * नई स्थानांतरित फ़ाइलों को जोड़ने के लिए और फिर एक Git कमिट करें और सब ठीक होना चाहिए।


यह बहुत सारी फाइल है इसलिए यह काम नहीं कर रहा है
Jackie

इसके अलावा, मुझे मास्टर से विलय करने की क्षमता को बनाए रखने की आवश्यकता है, इसलिए इसे हटाना और जोड़ना एक नहीं है
Jackie

@ जैकी आप फ़ाइल सिस्टम और Git को मिला रहे हैं। बहुत सारी फ़ाइलों को स्थानांतरित करने के लिए एक बैश स्क्रिप्ट रिपॉजिटरी को पेंच नहीं करता है। Git यह पता लगाएगा कि हटाई गई एक फ़ाइल अब के बाद दूसरी जगह पर है git add * और फिर फ़ाइल परिवर्तन इतिहास सहित सभी अच्छे होंगे।
JakeGould

इसके अलावा, आप कहते हैं, "... इसलिए हटाना और जोड़ना एक नहीं है।" आप रिपॉजिटरी से कुछ भी नहीं निकाल रहे हैं। आप बस अपने स्थानीय फ़ाइल सिस्टम पर चीजों को स्थानांतरित कर रहे हैं और फिर उन्हें अपने स्थानीय फ़ाइल सिस्टम पर Git में पुनः शामिल कर रहे हैं। फ़ाइल चाल का पता लगाने के लिए Git काफी स्मार्ट होगा और इतिहास गुम नहीं होगा।
JakeGould

मुझे पता है लेकिन मैंने ए करने की कोशिश की git rm, mv और फिर ए git add और इसे एक नई फाइल के रूप में देखा। निश्चित रूप से क्यों नहीं
Jackie
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.