मास्टर के साथ जीआईटी ओवरराइट शाखा


34

मेरी एक पुरानी देव शाखा है जो पूरी तरह से पुरानी है। मैं इसे हटाना नहीं चाहता लेकिन मैं इसकी सामग्री को पूरी तरह से मास्टर ब्रांच से बदलना चाहता हूं। मतलब, मुझे dev_branch = मास्टर चाहिए

मैंने कोशिश की:

git merge -s ours dev_branch

हालांकि काम नहीं किया ...

जवाबों:


56

आप से सभी परिवर्तनों को चाहते हैं masterमें dev_branchतो,:

git checkout dev_branch
git reset --hard master

यह केवल तभी काम करता है जब अन्य लोगों ने रिपॉजिटरी को क्लोन नहीं किया है।

यदि आपने dev_branchपहले ही किसी दूरस्थ को धकेल दिया है, तो आपको यह करना होगा:

git push --force

जोर-जबरदस्ती करने के लिए रिमोट। चेतावनी: यह उन लोगों के लिए शाखा के इतिहास को तोड़ देगा जिन्होंने इसे पहले क्लोन किया था! फिर, अन्य लोगों को एक करना होगा git pull --rebaseपर dev_branchपरिवर्तन मिलता है।


आप देव शाखा का नाम बदलकर कुछ पुराना कर सकते हैं और फिर masterउसी नाम से एक नई शाखा बना सकते हैं :

git branch -m dev_branch old_dev_branch
git branch -m master dev_branch

या, oursरणनीति का उपयोग करें - सुनिश्चित नहीं है कि यह आपके लिए काम क्यों नहीं करेगा:

git checkout master
git merge -s ours dev_branch
git checkout dev_branch
git merge master

नाम बदलने के समाधान के साथ, मुझे लगता है कि आप पाएंगे कि अब आप dev_branchमूल (यदि यह एक था) को धक्का नहीं दे सकते हैं , और आपके पास अब masterस्थानीय रूप से एक शाखा भी नहीं होगी ।
१15

धन्यवाद @slhck! किसी कारण से, मेरी मर्ज शाखा को सामान्य मर्ज करने के बाद अपडेट नहीं किया जा रहा था। यह कहता रहा कि मेरी चरण शाखा अप-टू-डेट थी। "हमारी" रणनीति का उपयोग करके मेरे लिए इसे हल किया।
शिनबोनी

हमारा केवल संघर्षपूर्ण विखंडनों को प्रभावित करेगा, लेकिन वह केवल संघर्षों को ही नहीं, बल्कि शाखा को पूरी तरह से नवीनीकृत करना चाहता है। (यह कम से कम मुझे क्या करने की आवश्यकता है और मुझे यह क्यू क्यों मिला) - मैं नाम बदलने के लिए जाऊंगा!
मार्टिन मेसेर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.