2011-04-10 11 views
18

जब मैं एक शाखा से फ़ाइलों को हटा देता हूं तो यह सभी शाखाओं से हटा देता है। मैं क्या कर सकता हूँ?गिट केवल एक शाखा से फ़ाइलों को हटाएं

+0

सटीक समस्या को देखने में सक्षम होने के लिए यह बहुत मदद करेगा यदि आप अपने द्वारा निष्पादित आदेश दे सकते हैं (शायद एक साधारण डेमो रिपोजिटरी बनाना समस्या का प्रदर्शन करने के लिए: 'गिट इनिट; टच ब्लै; गिट ऐड ब्लै; गिट प्रतिबद्ध-एम'बाला'; गिट चेकआउट -बी ए; गिट आरएम ब्लै; ... ') – knittl

उत्तर

21

गिट के साथ फ़ाइल को हटाने और उस परियोजना स्थिति को जारी रखने (git commit) इसे केवल उस प्रतिबद्धता और उसके बच्चों (उस शाखा में) में हटा दिया जाएगा। उस शाखा को दूसरी शाखा में विलय करते समय यह संभव हो सकता है कि फ़ाइल को हटाया जा रहा है (जब तक कि दूसरी शाखा में नहीं बदला जाता)।

फ़ाइल को हटाने पर, इसे नहीं करने और फिर शाखाओं को स्विच करने के बाद, गिट अन्य शाखा में परिवर्तनों के वर्तमान सेट को लागू करेगा, आपके मामले में फ़ाइल को भी हटाया जा सकता है। हटाए जाने से आपको उस समस्या से बचना चाहिए जो आप देख रहे हैं

-4

नहीं, यह सच नहीं है। मुझे लगता है कि आपकी भ्रम शाखाओं के बीच स्विचिंग से आता है। जब आप "गिट चेकआउट" करते हैं तो यह आपके काम करने वाले पेड़ को सुरक्षित रखता है, इसलिए स्विच करने के बाद आप अभी हटाई गई फ़ाइलों को फिर से नहीं हटाते हैं। विभिन्न शाखाओं में स्विच करना और आपके द्वारा किए गए सभी परिवर्तनों को रीसेट करना संभव है (आप फ़ाइलों को हटाते हैं)। उदाहरण के लिए आप स्विचिंग के बाद "" गिट रीसेट - हार्ड "लिख सकते हैं।

+1

यह बहुत बुरी सलाह है।' गिट रीसेट - हार्ड 'वर्तमान शाखा सूचक को निर्दिष्ट प्रतिबद्धता में ले जायेगा। यह' गिट चेकआउट 'से बहुत अलग है, अर्थात् एक शाखा (या प्रतिबद्ध/टैग) में हेड सेट करना और उस पेड़ को देखना, फिर परिवर्तनों को दोबारा लागू करना (यदि संभव हो तो पाठ विलय) – knittl

+0

ठीक है, मैं सहमत हूं कि नए आने वाले के लिए बुनियादी उपयोग के मामले के बारे में बात करते समय यह "रीसेट - हार्ड" का उल्लेख करना थोड़ा खतरनाक है। वैसे भी मुझे लगता है कि प्रदर्शन उद्देश्यों के लिए यह समझने के लिए बहुत अच्छा उदाहरण है कार्य पेड़ क्या है और शाखा क्या है (जो कम या ज्यादा सवाल था, सही है?) के बीच विचार। –

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