2016-08-23 5 views
8

मैं हमेशा सुनता हूं कि यह कुछ डरावना है और कुछ मुझे कभी नहीं करना चाहिए। उदाहरण के लिए, यहाँ कैसे पुल संवाद SourceTree में की तरह लग रहा है:अगर मैं धक्का देने के बाद रीबेस करता हूं तो क्या होता है?

enter image description here

तो मैं उत्सुक हूँ, क्या होगा और यह कितना बुरा अगर मैं परिवर्तन धक्का दिया था, तो रिबेस किया जाएगा और उन्हें फिर से धक्का दे दिया? और अगर मैं इसे इस तरह तोड़ दूंगा तो भंडार को कैसे ठीक किया जाए?

+0

अच्छी खबर यह है कि कुछ भी नहीं खो गया है। आप प्रभावी रूप से मौजूदा एक के साथ बहुत से नकल के साथ एक नई शाखा बनायेंगे, और हाल ही में भंडार से खींच चुके किसी भी व्यक्ति के लिए अनावश्यक परेशानी होगी। – Thilo

+2

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

उत्तर

7

कुछ भी नहीं होगा, लेकिन आपका अगला धक्का स्वीकार नहीं किया जाएगा।

जब तक आप पुश को मजबूर नहीं करेंगे। यह रिमोट रिपोजिटरी को भी तोड़ नहीं देगा, इसलिए यह भी बुरा नहीं है।

जब आप इस रेपो का उपयोग कर अधिक लोग हैं तो चीजें खराब होती हैं। रिवाइटिंग इतिहास दूसरों के लिए अराजकता का कारण बन सकता है जो रिमोट से नए बदलाव खींचेंगे। विशेष रूप से अगर उनके पास गिट का अच्छा ज्ञान नहीं है। अलग-अलग चीजें हो सकती हैं जो व्यक्ति के स्थानीय भंडार की स्थिति के आधार पर रिमोट लिखित रिमोट शाखा खींचने के लिए हो सकती हैं।

तो अगर कोई फीचर एक्स पर काम करेगा और आपने उस कोड को बदल दिया जिस पर वह अपने परिवर्तनों पर आधारित था, तो वह कम से कम परेशान हो सकता है कि उसके द्वारा किए गए कार्यों में से कितना काम अप्रचलित हो गया है।

+1

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

+2

@ थिलो हां लेकिन आपको अभी भी टीम में कम से कम 1 व्यक्ति की आवश्यकता है जो जानता है कि जीआईटी कैसे करें। अन्यथा मैं कोड खाने, परियोजना को तोड़ने, विश्व भूख इत्यादि के लिए जीआईटी को दोषी ठहरा सकता हूं। – Mateusz

+1

हां, किसी को (मैं सबको कहूंगा) समझता हूं कि गिट काम कैसे मदद करेगा :-) उन लोगों के लिए, जो दूर नहीं हैं, से दूर रहें '--force' और बॉक्स पर चेतावनियों पर ध्यान दिया। – Thilo

1

परिदृश्य में आप SourceTree में सूचीबद्ध हैं, SourceTree उन स्थानीय प्रतिबद्धताओं को रीबेस करता है जिन्हें आप रिमोट से खींच रहे परिवर्तनों के शीर्ष पर धक्का नहीं दिया गया है।

यदि आपने पहले विकल्प का उपयोग करने से पहले परिवर्तनों को पहले से ही धक्का दिया था, तो उन परिवर्तनों को पुन: विश्राम नहीं किया जाएगा क्योंकि वे पहले से ही रिमोट में हैं।

एकमात्र अपवाद हो सकता है यदि आपके पास एकाधिक रिमोट हैं, और एक रिमोट में परिवर्तन को धक्का दिया है, तो किसी अन्य से पुल/रीबेस करें - इससे गंभीर समस्याएं हो सकती हैं।

चाहे आपको पुल के दौरान रिबेस करना चाहिए या नहीं, बहस का विषय है। मैं इसकी सिफारिश नहीं कर रहा हूं, लेकिन यह आम तौर पर सुरक्षित है। https://developer.atlassian.com/blog/2014/12/pull-request-merge-strategies-the-great-debate/

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

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