यहां स्थिति है। मैं master
शाखा पर काम कर रहा हूं। मैं file1 बनाते हैं और प्रतिबद्ध करते हैं। मैं file2 बनाते हैं और प्रतिबद्ध करते हैं। ओह। मैं किसी दिन फ़ाइल 2 का उपयोग करना चाहूंगा, लेकिन यह निश्चित रूप से कुछ नहीं है जिसे मास्टर शाखा में रखा जाना चाहिए। इसलिए कि मैं फ़ाइल 2 नहीं खोता हूं, मैंगिट: मैं विलय पर सभी स्थानीय परिवर्तनों को कैसे ओवरराइट कर सकता हूं?
git checkout head~1
git branch new-branch
git checkout new-branch
का उपयोग करता हूं ताकि मैं विकास जारी रख सकूं। मैं फ़ाइल 3 को new-branch
में जोड़ता हूं। यदि आप ध्यान दे रहे हैं, तो मुझे दो शाखाएं मिली हैं, master
जिसमें "file1" और "file2" और new-branch
शामिल हैं जिनमें "file1" और "file3" है।
अब मास्टर शाखा में किए गए परिवर्तनों को प्राप्त करने का समय है। ऐसा करने का सबसे अच्छा तरीका क्या है? new-branch
में दिखाई देने वाली फ़ाइलों को इंगित करने के लिए मैं निश्चित रूप से master
शाखा का सिर चाहता हूं, लेकिन अगर मैं इसका उपयोग करना चाहता हूं, तो मैं रीसेट करके फ़ाइल 2 में किए गए काम को भी खोना नहीं चाहता हूं।
ध्यान रखें कि यह एक सरलीकरण है। केवल तीन फाइलों के बजाय, मेरे पास एक दर्जन फाइलें हैं जिनके साथ कई जगहों पर सभी जगहों पर कोड बदल दिया जा रहा है। मुझे निश्चित रूप से उम्मीद है कि समाधान फ़ाइल-दर-फ़ाइल मर्ज/चेकआउट नहीं करना है, क्योंकि यह एक बड़ा दर्द होगा।
कोई विचार?
आपने कहा "ऐसा लगता है कि यह मुझे चाहिए", लेकिन क्या आपने शाखा को स्विच करने का प्रयास किया जैसा कि मैंने अपने उत्तर में इंगित किया है? – VonC
मैंने किया। रंदल का जवाब मेरे समाधान के करीब भी था। यह पता चला है कि कुंजी 'गीट रीसेट - हार्ड हेड ~ 1' है। मुझे एहसास नहीं हुआ कि आप एक कमांड के साथ काम करने की स्ट्रिंग को रीसेट कर सकते हैं। मुझे बस इतना करना है कि वर्तमान मास्टर शाखा से शाखा है, फिर वापस जहां मैं घबराहट करना शुरू कर दिया। – kubi