नहीं, मुलायम रीसेट पर्याप्त नहीं है। ऐसा करने से फ़ाइल को आपकी अनुक्रमणिका में छोड़ दिया जाएगा (जहां आप फ़ाइलों को प्रतिबद्ध करने के लिए चरणबद्ध करते हैं)। इसका मतलब है कि वह गिट अभी भी फाइल को ट्रैक कर रहा है।
आप एक मिश्रित रीसेट करना चाहते हैं, जो इन फ़ाइलों को भी अस्थिर करता है। जैसा कि रेने ने बताया, फ़ाइल को हटाने या इसे अपने .gitignore
में जोड़ने का भी एक अच्छा विचार है, इसलिए आप इसे फिर से गलती से नहीं करते हैं।
यह पर्याप्त है इसलिए संवेदनशील जानकारी git push
पर रिमोट सर्वर पर प्रेषित नहीं की जाएगी।
हालांकि, जानकारी अभी भी आपके स्थानीय भंडार में है। यदि आपने गलती से बहुत दूर रीसेट करके एक प्रतिबद्धता को "ढीला" किया है, तो git reflog एक बहुत ही उपयोगी टूल है।
अब सभी दूर सब करता है कि एक शाखा या टैग के माध्यम से पहुंच योग्य नहीं हैं साफ करने के लिए:
git reflog expire --expire=1.minute --all
git prune
git gc
- सभी प्रविष्टियों को निकालता है reflog से अधिक उम्र के 1 मिनट। यदि कोई शेष संदर्भ है तो एक प्रतिबद्धता को हटाया नहीं जाएगा। ऐसा संदर्भ किसी अन्य प्रतिबद्धता, एक शाखा, एक टैग और रीफ्लॉग से भी आ सकता है।
- उन सभी कामों को हटा देता है जो अब पहुंच योग्य नहीं हैं।
- कई हाउसकीपिंग कार्य करता है। अधिक जानकारी के लिए documentation
reflog expire
को देखो और prune
विनाशकारी संचालन कर रहे हैं। मैं इन आदेशों को --dry-run
तर्क के साथ पहले चलाने की सलाह देता हूं, यह देखने के लिए कि वास्तव में क्या हटाया जाता है।
स्रोत
2015-08-24 07:00:01
मेरा उदाहरण पर्याप्त क्यों नहीं है? गिट रीसेट HEAD इतिहास से फ़ाइल को हटा देता है, है ना? क्या वह पर्याप्त नहीं है? –
Mattias
@ मैटियास 'गीट रीसेट HEAD -' केवल एक फ़ाइल रीसेट करें, लेकिन वर्तमान प्रतिबद्धता को परिवर्तित नहीं करता है (जिसमें अभी भी आपकी संवेदनशील फ़ाइल शामिल है)। आप अपनी फ़ाइल के बिना एक नया प्रतिबद्ध करने में सक्षम होंगे, लेकिन इतिहास (पिछला प्रतिबद्ध) अभी भी संवेदनशील फ़ाइल का संदर्भ देगा। इसे इतिहास से वास्तव में हटाने के लिए, आपको केवल पिछली प्रतिबद्धता को फिर से करने की आवश्यकता है, न केवल फ़ाइल। –
VonC
यदि मैं 'गिट रीसेट - सॉफ्ट हेड ~ 1' करता हूं, जो पिछली प्रतिबद्धता को रीसेट कर देगा (संवेदनात्मक फ़ाइल को एक से पहले किया गया था), और फिर 'गीट रीसेट HEAD -' करें, जो संवेदना को हटा देगा गिट इंडेक्स से फ़ाइल, क्या मुझे सटीक परिणाम नहीं मिलेंगे क्योंकि 'गीट रीसेट हेड ~ 1' कर रहा है सिवाय इसके कि मैं सभी गैर-संवेदी फाइलों को इंडेक्स में रखता हूं? –
Mattias