'Rm' के बजाय फाइल हटाने के लिए 'git rm' का उपयोग क्यों करें?


171

एसवीएन पर, सीधे फाइलसिस्टम से कुछ हटाने (svn का उपयोग करने के बजाय) ने सिरदर्द का भार पैदा किया।

मैंने इसे उपयोग करते समय एक मुद्दा नहीं पाया है git, लेकिन मुझे लगता है कि git का अपना rmकार्यान्वयन है ( git rm)।

बीच क्या अंतर है rmऔर git rm?

जवाबों:


253

यदि आप अभी उपयोग करते हैं rm, तो आपको इसके साथ पालन करने की आवश्यकता होगी git add <fileRemoved>git rmएक कदम में यह करता है।

आप वह भी उपयोग कर सकते हैं git rm --cachedजो फ़ाइल को अनुक्रमणिका से हटा देगा (इसे अगले आदेश पर हटाने के लिए मंचन करेगा), लेकिन अपनी प्रतिलिपि को स्थानीय फ़ाइल सिस्टम में रखें।


अच्छा उत्तर। मैं उपयोग करने में सक्षम था git reset --hardऔर फिर अलग किए गए हेड स्टेट से बाहर निकलने के लिए मास्टर का चेकआउट करता था क्योंकि मुझे पता था कि मेरे पास कोई भी अनपेक्षित परिवर्तन नहीं है। यदि आपने अपने परिवर्तन नहीं किए हैं, तो आप एक git स्‍टैश करना चाहते हैं, लेकिन मैं git के लिए अपेक्षाकृत नया हूं ताकि मुझे सटीक कमांड का पता न चले। यदि आप 2014 में या उसके बाद यहां आए हैं, तो मुझे उम्मीद है कि यह उत्तर आपके लिए उपयोगी था।
एरिक हेपरले - कोडस्लेयर2010

@Andy - अगर मैंने rm(इसके बजाय git rm) का उपयोग किया और इसका उपयोग करके कई फ़ाइलों को हटा दिया, और अब gitउन पर नज़र नहीं रखना चाहता । क्या परिवर्तनों को वापस करने का एक तरीका है? जब से मैंने पहली जगह का उपयोग नहीं किया, मैं gitअपने rmको हटाना चाहता हूं git rm
चेतन अरविंद पाटिल

यह अच्छा होगा यदि यह स्पष्ट रूप से डॉक्स में ऑनलाइन वर्तनी में है (यह हो सकता है, लेकिन यह स्पष्ट रूप से स्पष्ट नहीं है या यह प्रश्न नहीं पूछा जाएगा)। उपयोगकर्ताओं के लिए यह जानना अच्छा होगा कि यदि वे OS rm मार्ग पर जाते हैं तो वे कुछ भी गलत नहीं कर रहे हैं। और ओएस मार्ग पर जाने के कारण हैं। उदाहरण के लिए, यदि आपको यह जांचने के लिए फ़ाइल को हटाने की आवश्यकता है कि परिवर्तन करने से पहले कुछ काम करता है, तो ओएस मार्ग git rm का उपयोग करने की तुलना में थोड़ा सुरक्षित है, क्योंकि git मामले में आपको कार्रवाई को अनस्टेज करना होगा, जबकि OS विकल्प में आपके पास बस लाने के लिए (मेरा मानना ​​है)।
बॉब

12

उपयोग करने वाली फ़ाइलों को हटाने rmसे प्रति समस्या नहीं होती है, लेकिन यदि आप चाहते हैं कि फ़ाइल हटा दी गई थी git rm, तो आपको वैसे भी करना होगा , इसलिए आप इसे वैसे ही कर सकते हैं जैसे बल्ले से करना।

इसके अलावा, आपके शेल के आधार पर, git rmफ़ाइल को हटाए जाने के बाद, आपको टैब-पूर्णता प्राप्त नहीं होगी, इसलिए आपको स्वयं ही पथ को वर्तनी करना होगा, जबकि यदि आप git rmअभी भी फ़ाइल मौजूद हैं, तो टैब पूर्ण होना सामान्य के रूप में कार्य करेगा।


7

git rmइंडेक्स और वर्किंग डायरेक्टरी (केवल इंडेक्स यदि आपने इस्तेमाल किया है --cached) से फाइल को हटा देगा ताकि डिलीट का अगले कमिट के लिए मंचन हो।


4

हालाँकि, यदि आप git rm के बजाय rm का उपयोग करते हैं। आप git ऐड को छोड़ सकते हैं और सीधे बदलाव का उपयोग कर सकते हैं:

git commit -a


3

अनुक्रमणिका, या कार्यशील ट्री और अनुक्रमणिका से फ़ाइलें निकालें। git rm सिर्फ आपकी वर्किंग डायरेक्टरी से फाइल नहीं निकालेगा।

यहां बताया गया है कि आप किसी फ़ाइल का उपयोग करके कैसे हटा सकते हैं rm -fऔर फिर इसे अपने सूचकांक से हटा सकते हैंgit rm

$ rm -f index.html
$ git status -s
 D index.html
$ git rm index.html
rm 'index.html'
$ git status -s
D  index.html

हालाँकि आप यह सब सिर्फ एक बार में कर सकते हैं git rm

$ git status -s
$ git rm index.html
rm 'index.html'
$ ls
lib vendor
$ git status -s
D  index.html

2

Git rm का उपयोग करते समय, निष्कासन आपके अगले कमिट का हिस्सा होगा। इसलिए यदि आप बदलाव को आगे बढ़ाना चाहते हैं तो आपको git rm का उपयोग करना चाहिए


2

एंडी के जवाब में जोड़ना, अतिरिक्त उपयोगिता है git rm:

  1. सुरक्षा : git rmइसके बजाय करते समय rm, Git निष्कासन को रोक देगा यदि HEADकिसी फ़ाइल के संस्करण और स्टेजिंग इंडेक्स या कार्यशील ट्री संस्करण के बीच कोई विसंगति है । यह ब्लॉक इन-प्रोग्रेस परिवर्तनों को हटाने से रोकने के लिए एक सुरक्षा तंत्र है।

  2. सुरक्षा : git rm --dry-run। यह विकल्प एक सुरक्षा कवच है जो git rmकमांड निष्पादित करेगा लेकिन वास्तव में फ़ाइलों को हटा नहीं सकता है। इसके बजाय यह आउटपुट करेगा कि यह किस फाइल को हटा देगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.