2015-08-21 17 views
8

के बाद शाखा से परिवर्तन कैसे खींचें मुझे उम्मीद है कि शीर्षक बहुत भ्रमित नहीं है।जीआईटी: एक उलटा विलय

इतिहास (उर्फ क्या मैं गलत किया था):

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

मैंने गलती से विलय कर दिया और मास्टर को फीचर में धक्का दिया।

यह कहीं भी तैयार नहीं था, इसलिए मैंने इसे वापस करने की कोशिश की। मैंने निम्नलिखित कोशिश की: http://sethrobertson.github.io/GitFixUm/fixup.html#pushed_new_merge लेकिन मुझे लगता है कि मैंने यह गलत किया है। मैंने प्रयोग किया: गिट वापस लौटा, फिर इसे वापस लाया और इसे धक्का दिया। समस्या हल हो गई - सुविधा अब मास्टर पर नहीं बदलती है।

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

मैं विषय googled है और सबसे होनहार जवाब यह है: https://metlos.wordpress.com/2012/01/13/git-merging-after-a-revert/ लेकिन यहाँ मर्ज अन्य तरीके की तुलना में मैं चाहता हूँ (मास्टर करने के लिए सुविधा है, मैं गुरु की जरूरत सुविधा के लिए) हो जाता है।

मैं मास्टर की क्लोन शाखा बनाने के बारे में सोच रहा हूं, फिर उस शाखा के लिंक से निर्देशों को लागू कर रहा हूं, इसलिए मुझे परिणाम मिल सकते हैं, लेकिन मुझे डर है कि यह एक अस्थायी समाधान है जिसे मैं कभी भी लागू करना चाहता हूं मास्टर से खींचो।

मैंने इस कहानी के लिए अराजक नहीं होने की कोशिश की, अगर कुछ समझ में नहीं आता है तो मैं स्पष्टीकरण दूंगा।

उत्तर

3

आप एक टीम/सार्वजनिक भंडार के लिए मास्टर शाखा धक्का दिया नहीं किया है और आप कोई मास्टर पर पुल के बाद प्रतिबद्ध है, तो आप मास्टर शाखा पर

git reset --hard **the-commit-before-pulling-feature-branch** 

कर सकते हैं। यह इतिहास से गलती को प्रभावी ढंग से मिटा देगा और एक साफ इतिहास देता है।

अन्यथा, (यानी यदि आप पहले से रेपो के लिए मास्टर धक्का दिया या गुरु के बारे में अधिक प्रतिबद्ध किया है), तो आप

git revert **the-revert-commit** 
सुविधा शाखा पर

मास्टर खींच, प्रभावी ढंग से वापस लाएं वापस लाने के बाद ऐसा कर सकते हैं प्रतिबद्ध।

+1

मैंने इसे धक्का दिया था और नए काम पहले से ही किए गए थे। आपका समाधान एक आकर्षण की तरह काम करता था, सबसे पहले मुझे 'वापसी नहीं कर सका' त्रुटि मिली, लेकिन यह केवल एक फाइल थी जिसके लिए मैन्युअल विलय की आवश्यकता थी। बहुत बहुत धन्यवाद। – effique

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