2011-08-12 15 views
5

मैं शीर्षक से खुश नहीं हूं लेकिन मुझे लगता है कि मैंने अपनी व्याख्या को बढ़ाया है और यह अंत में ऊपर जैसा ही सरल है।भंडार से गलत विलय को हटाएं

हम एक केंद्रीय मूल रेपो के साथ एक शाखाओं में मॉडल का उपयोग कर रहे हैं, एक शाखा "विकसित", इस शाखा बंद सुविधा शाखाओं के साथ।

मैं बंद का विकास शाखा परिवर्तन का एक स्थानीय सेट विकसित की थी, की तरह कुछ:

develop (A)- (D1) - (D2) 
     \ - (F1) - (F2) - (F3) - (F4) 

इस बिंदु मैं अपने Git जीयूआई में फिसल गया और बदले में करने के लिए एक दूरस्थ शाखा के रूप में मेरी सुविधा शाखा धकेलने की, पर मूल, मैंने किसी भी तरह इसे मूल/विकसित में धक्का दिया। तो, अब हमारे पास था:

develop (A)- (D1) - (D2) -  -  (M1) 
     \ - (F1) - (F2) - (F3) - (F4)/

जिसे हम अभी तक नहीं चाहते थे। चूंकि इस विशेष दिन में केवल मेरा स्वयं और एक अन्य डेवलपर था, इसलिए मैंने मूल मेजबान में प्रवेश किया और डी 2 प्रतिबद्धता और मेरी फीचर शाखा को वापस एफ 4 पर विकसित किया। मैंने अपने सहयोगी से तब तक खींचने के लिए कहा जब तक कि मैंने ऐसा नहीं किया, और इसलिए सोचा कि सब ठीक थे।

(वास्तव में मैंने मूल रेपो को क्लोन किया, सिर को स्थानीय रूप से बदल दिया, और फिर उन्हें मजबूती से वापस धक्का दिया। मुझे वास्तव में सटीक आदेश याद नहीं हैं लेकिन परिणाम वांछित वांछित था, जहां तक ​​वांछित था मै देख सकता हूँ)।

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

तो हम कुछ इस तरह एक स्थिति में अब कर रहे हैं:

CruiseControl रेपो:

 (from origin/develop)   (C1) - (C2) - (C3) 
develop (A)- (D1) - (D2) -  -  (M1) \ (M2) \ (M3) 
     \ - (F1) - (F2) - (F3) - (F4)/

उत्पत्ति रेपो:

develop (A)- (D1) - (D2) - (C1) - (C2) - (C3) 
     \ - (F1) - (F2) - (F3) - (F4) 

रहे हैं कहाँ C1 और C2 मूल रेपो में बनाया करता है हमारे डेवलपर्स द्वारा जिनके पास "सही" रेपो है (यानी मेरे प्रारंभिक गलती को पूर्ववत करने के लिए मेरे सिर में हेरफेर के बाद), और एम 2 और एम 3 विलय करते हैं कि क्रूज़ कंट्रोल रेपो को अब बनाना था।

अब मैं कुछ वास्तव में बेवकूफ था। मैं cruisecontrol स्रोत repo में "गिट पुश" एड। तो हमारे "मूल" रेपो में अब एम 1 विलय है और हस्तक्षेप एम 2 और एम 3 विलय हो गया है।

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

मैं मैं कुछ प्रमुख^(x) और प्रमुख ~ (y) के साथ चालाक करने की जरूरत है लगता है , लेकिन इस संक्षेप है और इस तरह नहीं बल्कि के लिए गूगल के लिए कड़ी मेहनत की व्याख्या करने के लिए एक मुश्किल स्थिति है।

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

मुझे लगता है कि मुझे उपरोक्त मूल आरेख में मूल रेपो के साथ समाप्त करने में सक्षम होना चाहिए, और क्रूज़ कंट्रोल रेपो हटा दिया गया है और फिर से क्लोन किया गया है, और मूल श्रृंखला में एकत्रित कचरा होने के लिए एम सीरीज तैयार है।

धन्यवाद! एक ही हैश के साथ Git में

+0

क्या आप सीआई को निलंबित नहीं कर सकते, सीआई रेपो क्लोन नहीं कर सकते हैं, इसे एक अच्छी स्थिति में रीसेट कर सकते हैं और इसे वापस धक्का दे सकते हैं? जैसा आपने मूल के लिए किया था? – VonC

+0

जब आपके पास एम 1 नहीं था तो आप लोग सी 1 और सी 2 कैसे बनाते थे? – Andy

+0

यदि आप अपनी वांछित अंत स्थिति दिखाएंगे तो इससे मदद मिलेगी क्योंकि मुझे यकीन नहीं है कि आप कहां समाप्त करना चाहते हैं। –

उत्तर

2

सब करता समान हैं (और इसलिए इतिहास है), तो आप (यह देखते हुए कि develop की जाँच की है दोनों अपने मूल में एक ही आदेश और अपने सीआई भंडार का उपयोग करने में सक्षम होना चाहिए:

# on the current branch: 
git reset --hard C3 
# on your feature branch: 
git branch -f feature F4 

git push मजबूर-धक्का नहीं करना चाहिए डिफ़ॉल्ट रूप से, और आपको प्रादेशिक नहीं था कि आपके सवाल का जहां CI -> origin धक्का हुआ है, तो मैं यह सोचते कर रहा हूँ कि यह एक तेजी से आगे धक्का था (डिफ़ॉल्ट)

के लिए भविष्य में मैं git fetchकरने के लिए अपने सीआई भंडार की अनुशंसा करता हूं, जब तक कि आप अपनी शाखाओं को एक साथ विलय नहीं कर लेते (संभवतः सीआई रेपो में केवल मौजूदा के साथ ही काम करता है)

+0

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

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