आप वर्तमान शाखा के परिवर्तनों को किस प्रकार मर्ज किए जा रहे परिवर्तनों के शीर्ष पर वापस कर सकते हैं?


144

ठीक है। यदि मैं एक शाखा (कहता हूं working) पर हूं , और मैं किसी अन्य शाखा (कहना master) से परिवर्तनों में विलय करना चाहता हूं , तो मैं शाखा git-merge masterपर रहते हुए कमांड चलाता हूं working, और परिवर्तन इतिहास को फिर से बनाए बिना विलय हो जाते हैं। अगर मैं दौड़ता हूं git-rebase master, तो masterमेरी workingशाखा के शीर्ष पर लगाए जाने वाले बदलावों में छूट दी जाती है । लेकिन क्या होगा अगर मैं बदलाव में विलय करना चाहता हूं, masterलेकिन workingशीर्ष पर होने के लिए मेरे बदलावों को फिर से बनाना है? मैं उसको कैसे करू? क्या यह किया जा सकता है?

मैं git-rebase workingअपनी masterशाखा में शीर्ष पर अपने परिवर्तन डालने के लिए अपनी शाखा पर दौड़ सकता था master, लेकिन मैं अपनी workingशाखा में ऐसा करने में सक्षम होना चाहूंगा , और मुझे नहीं पता कि कैसे। मैं जो करने के बारे में सोच सकता हूं वह सबसे ऊपर से एक नई शाखा बना रहा है masterऔर फिर workingउस के शीर्ष पर रिबास का परिवर्तन होता है, लेकिन तब मुझे शाखा को बदलने के बजाय एक नई शाखा होगी working

जवाबों:


255

आपको वह मिल गया है जो rebaseपीछे की ओर है। git rebase masterवह करता है जो आप के लिए पूछ रहे हैं - वर्तमान शाखा (मास्टर से विचलन के बाद से) पर परिवर्तन लेता है और उन्हें masterफिर से शीर्ष पर रखता है , फिर वर्तमान शाखा के प्रमुख को उस नए इतिहास का प्रमुख बनाता है। यह वर्तमान शाखा के शीर्ष से परिवर्तनों को फिर से नहीं करता हैmaster


3
@ जोनाथन यह शांत है। यह थोड़ा मुश्किल विषय है। वैसे, शाखा के शीर्ष पर होने के लिए परिवर्तन (उस बिंदु के बाद बंद हो जाएगा) को git rebase workingस्थानांतरित करेगा - लेकिन यह करने के लिए बहुत समझदार बात नहीं है :)masterworkingworkingmaster
हॉब्स

66

इसे देखने का एक और तरीका है git rebase master:

के शीर्ष पर वर्तमान शाखा को पुनः स्थापित करें master

यहाँ, ' master' अपस्ट्रीम ब्रांच है, और यही कारण है कि क्यों, एक रिबेस के दौरान, oursऔर theirsउलटा हो जाता है


यह भी बताता है कि क्यों LOCAL और REMOTE को उलट दिया जाता है। धन्यवाद।
अवेलेवलर

LAVAL और REMOTE पर @AVIDeveloper, आप stackoverflow.com/a/3052118/6309
VONC

5
@@ VonC: धन्यवाद। हाँ, अपने आप को दोपहर का समय बिताने के बाद "REMOTE मेरी शाखा है .. LOCAL मेरा नहीं है", यह सब डूब गया, ईमानदारी से, मैं REMOTE / LOCAL / के बजाय शाखा नाम (या abbrev। SHA) देखना पसंद करूंगा। हमारा / उनकी / मेरा। मेरे विचार वही हैं जो git difftoolबाएँ या दाएँ के भयानक हैं। किन्डा ऑफ़ टॉपिक, लेकिन फॉर difftoolमैं गेट-मेल्ड और स्टिक @ {0} 'जैसे' वर्क-डायर 'जैसे नामों का आनंद लेता हूं।
अवेलेवलर

1
@VonC: क्या आप बता सकते हैं कि ऐसा कैसे हो सकता है जब हम करते हैं: git checkout branch_to_update git rebase masterमैं इसके विपरीत स्थानीय शाखा के शीर्ष पर मास्टर के कमिट लॉग में मिलता हूं?
जावासा

1
@JavaSa अजीब है, जब तक कि रिबास ठीक से पूरा नहीं हुआ था? आपको इसमें अधिक विवरण के साथ एक अलग प्रश्न पूछने की आवश्यकता हो सकती है।
वॉनच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.