2012-11-17 44 views
6

हमें हमारे गिटहब भंडार के साथ कोई समस्या है। मैं अपने वर्कफ़्लो को समझाऊंगा:गिट के बाद गायब कोड

डेवलपर मेनलाइन शाखा से सुविधा/बग फिक्स शाखाएं बनाते हैं। वे अपने परिवर्तनों को वापस विलय करने के लिए अनुरोध करते हैं। वे मुख्य लाइन शाखा से रीबेज कर सकते हैं ताकि वे काम से नवीनतम अपडेट प्राप्त कर सकें। एक रिबेस के बाद वे अपनी फीचर शाखा पर जोर देते हैं।

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

हमें संदेह है कि इतिहास की कुछ पुनर्लेखन हुई है। हम कैसे पता लगा सकते हैं और हम इसे कैसे होने से रोक सकते हैं। क्या हमारे वर्कफ़्लो के साथ कुछ मौलिक रूप से गलत है?

+4

क्या आपने इस समय के आसपास रिफ्लॉग का निरीक्षण किया है? क्या हो रहा है इसके बारे में कुछ संकेत हो सकते हैं। आम तौर पर, बल धक्का को एक बुरा विचार माना जाता है। अगर वे विलय के बाद फीचर शाखा में मजबूर हो जाते हैं, तो मुझे यकीन नहीं है कि क्या होगा, हालांकि मुझे लगता है कि यह मास्टर शाखा पर प्रतिबद्धता को खोना नहीं चाहिए। मेथिंक किसी ने गलती से मुख्य रेखा पर बल दिया है - ऐसा कोई अन्य स्पष्ट तरीका नहीं देख सकता है जो हो सकता है। – MattJenko

+0

मैंने हाल ही में इसी मुद्दे के कारण गिथब को ईमेल किया है (एक साथी देवों में से एक ने बिना किसी पूछे बिना बल दिया है) यह पूछने के लिए कि क्या गीथूब रेपो में बल धक्का को अस्वीकार करना संभव है, उन्होंने कहा कि अब यह कॉन्फ़िगर करने योग्य नहीं है, लेकिन अगर हम हार गए हैं कुछ काम करते हैं, हम उन्हें पुनर्प्राप्त करने में मदद मांगने के लिए जीएच से संपर्क कर सकते हैं। आम तौर पर सभी अनाथ काम जीएच में रीफ्लॉग में और देव के स्थानीय रेपो में होना चाहिए, जिन्होंने पुल अनुरोध को आरंभ किया - कचरा स्वचालित रूप से या मैन्युअल रूप से एकत्रित होने तक। –

+0

इसी तरह की चीज़ के लिए यहां देखें: http://stackoverflow.com/questions/5094524/github-prevent-colaborator-from-push-f लगता है कि गिटहब इसे लागू करने के लिए बहुत उत्सुक नहीं है। भविष्य के लिए आप या तो 1) इंटरमीडिएरी रेपो कर सकते हैं, विभिन्न हुक सेट अप के साथ चीजें प्राप्त कर सकते हैं, जो सभी ठीक होने पर गिथब को धक्का देगी, 2) केंद्रीय रेपो को धक्का देने की अनुमति देने वाले व्यक्तियों की संख्या को प्रतिबंधित करें (शायद केवल 1 व्यक्ति, प्रत्येक घूर्णन सप्ताह आदि)। मुझे पता है कि यह जवाब संतोषजनक नहीं हो सकता है। –

उत्तर

0

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

संक्षेप में, पुरानी प्रतिबद्धता खो गई थी, और एक नई समान प्रतिबद्धता बनाई गई थी।

यही कारण है कि यह बेहद सार्वजनिक रूप से किसी भी काम को पुनर्जीवित करने के लिए निराश है, क्योंकि आप प्रभावी ढंग से इतिहास बदल रहे हैं। आपके काम से ब्रांच किए गए किसी भी व्यक्ति का बहुत बुरा दिन होगा यदि उनका काम उन परिवर्तनों पर आधारित है जो अब उपलब्ध नहीं हैं।

संपादित करें: प्रतिबद्धता प्रति खो नहीं जाती है, यह अभी भी आपके रेपो में मौजूद है। हालांकि, यह अब शाखा पर उपलब्ध नहीं है

+0

अच्छा, नहीं। यह "असामान्य" नहीं है, और यही कारण है कि एक पुनर्स्थापित शाखा को धक्का देना निराश नहीं है। – jthill

+0

@jthill: अधिक विस्तार करने की देखभाल? आपने बस जो कहा मैंने उसे अस्वीकार कर दिया और समझाया नहीं कि मैंने जो कहा वह गलत है। इसके अलावा, http://git-scm.com/book/ch3-6.html, पुनर्जन्म के भाग के खतरे उसी तरीके से बताते हैं जैसा मैंने किया था। शायद मुझे कुछ याद आया? – Faisal

+0

उनकी व्याख्या आपके जैसा नहीं है। आपके द्वारा उपयोग किए जाने वाले शब्द "असामान्य" में कभी दिखाई नहीं देता है, और आपके उत्तर में पहले से ही कुछ हद तक विस्तृत विवरण की तुलना में भी मजबूत प्रभाव पड़ता है। रीबेज के बाद सभी पुराने काम अभी भी आपके रेपो में हैं, वे * खो गए * नहीं हैं। – jthill