2013-08-04 4 views
5

ग्रहण + egit के साथ मुख्य शाखा में परिवर्तन करने के लिए अनुशंसित कदम क्या हैं?फ़ाइलों को मर्ज कैसे करें और उन्हें egit और ग्रहण का उपयोग करके प्रतिबद्ध करें?

मैं लंबे समय से ग्रहण और svn का उपयोग कर रहा हूं और सब कुछ खूबसूरती से काम करता है।

  • संघर्ष
  • जब संघर्ष पाए जाते हैं, मैन्युअल रूप से विलय के लिए कार्यक्षेत्र
  • देखो के साथ सिंक्रनाइज़ और उसके बाद के रूप में विलय कर दिया
  • अपडेट फाइल को चिह्नित: जब भी मैं के बारे में एक परिवर्तन के लिए प्रतिबद्ध करने हूँ, मेरी प्रवाह पीछा कर रहा है
  • प्रतिबद्ध

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

यहां तक ​​कि अगर मैं फ़ाइलों कि परस्पर विरोधी हैं अद्यतन करते हैं, यह से उबरने के लिए बुरा नहीं है, हालांकि मुझे लगता है कार्यक्षेत्र के साथ सिंक्रनाइज़ है कि पहली संघर्षों के साथ की पहचान करने और फ़ाइलों को मर्ज करने है एक अद्यतन के बाद विलय के प्रयास से एक बेहतर प्रवाह है कि विवादों के कारण विफल रहा।

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

भले ही मैं उसी दृष्टिकोण का पालन करता हूं, मैंने svn के साथ उपयोग किया है (पहले सिंक्रनाइज़ करें और मैन्युअल रूप से विवादों के साथ फ़ाइलों को मर्ज करें) और एक पुल के साथ दूसरे का पालन करें, मुझे अभी भी वही विफलता मिलती है जो मैंने ऊपर वर्णित की है, जैसे कि मेरी फ़ाइल को विलय के रूप में चिह्नित करना के लिए जिम्मेदार नहीं था।

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

उत्तर

7

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

सबसे पहले मुझे यह कहना है कि एसवीएन या सीवीएस से आने से आप अपने वर्कफ़्लो को करने में सक्षम नहीं होंगे जैसा आपने वर्षों से किया था।

विशेष रूप से फ़ाइलों के एक छोटे से सेट पर काम करना और केवल सिंक्रनाइज़ेशन के माध्यम से अपडेट करना गिट के साथ काम नहीं करेगा। हमारे गिट के साथ सिंक्रनाइज़ करते समय (सर्वर से नवीनतम प्राप्त करने के मामले में) जब मैं लेता हूं तो यहां दिए गए कदम हैं।

  1. मैं प्रतिबद्ध हूं। प्रारंभिक प्रतिबद्धता आपको बहुत दर्द बचाती है! रिमोट रेपो के साथ सिंक्रनाइज़ करते समय लंबित परिवर्तन नहीं होते हैं, उदाहरण के साथ यह दर्द का एक गुच्छा हो सकता है।
  2. मैं लाता हूं। उदाहरण के साथ आप क्रिया को टूलबार में डाल सकते हैं या इसके लिए शॉर्टकट भी बना सकते हैं, जिससे लचीला काफी आरामदायक हो जाता है।
  3. fetch का परिणाम एक संवाद में प्रस्तुत किया जाएगा।मैं परिवर्तनों का अध्ययन करता हूं, क्योंकि ऐसा लगता है कि यह उदाहरण के साथ ऐसा करने का सबसे अच्छा मुद्दा है। आप सभी प्रतिबद्ध संदेशों को पढ़ सकते हैं और पृष्ठभूमि में एक प्रतिबद्धता खोलने और diff का अध्ययन करने के लिए भी उन्हें डबल क्लिक कर सकते हैं। हां, यह संवाद मोडल नहीं है .. इसलिए आप इसे दूसरे मॉनिटर पर ले जा सकते हैं।
  4. मैं एक रिबेस करता हूं। जो विलय के समान है लेकिन उस जानकारी से नहीं निकलता है जिस बिंदु से आपने अपना अस्थायी विकास शुरू किया था। यह मेरी कंपनी द्वारा बनाई गई एक डिज़ाइन निर्णय है - विलय पर रिबेस को प्राथमिकता देने के लिए।
  5. यदि आपके पास संघर्ष हैं तो आप उन्हें हल करने के लिए मर्ज टूल का उपयोग कर सकते हैं। यह सीवीएस के साथ किए गए सिंक्रनाइज़ेशन के समान है। Add to index करना याद रखें क्योंकि यह नया mark as merged है। इसके बाद आपको Rebase > Continue करना चाहिए यदि आपने रीबेज किया था।
  6. मैं एक धक्का करता हूं। और अगर इस दौरान कोई भी धक्का नहीं देता है।

यह मेरा वर्कफ़्लो है। यदि यह सही दिशा है तो मैं और विवरण जोड़ सकता हूं कि मैं कई कदम क्यों करता हूं जैसा कि मैं करता हूं और मुझे लगता है कि उन्हें सबसे अच्छा तरीका उदाहरण के साथ क्या कर रहा है।

+0

क्या आप सलाह दे सकते हैं कि चेकआउट संघर्ष को कैसे दूर किया जाए http://stackoverflow.com/questions/18050220/eclipse-egit-checkout-conflict-with-files-egit-doesnt-want-to-continue। भविष्य के लिए अब मैंने सीखा, मुझे लाने से पहले किया जाना चाहिए था। –

+1

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

+0

शुरुआत में भ्रमित करने वाली कई संभावनाएं हैं। पथ को जानने की जरूरत है। –

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