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

मान लें कि मास्टर ब्रांच ABC है।

  1. मैंने इसे dev1 में विभाजित किया और इसे विकसित किया और अब यह ABCD था।
  2. किसी ने इसे dev2 में विभाजित किया और उसका अंतिम मान ACCDE था।
  3. फिर dev2 मास्टर और मास्टर शाखा में विलय हो गया, अंतिम मूल्य ACCDE है।

चूंकि dev1 मास्टर के एबीसी संस्करण पर काम कर रहा था, इसलिए देव 1 पर विकास कैसे जारी रखा जाए जो मास्टर के पिछले संस्करण पर निर्भर करता है जब मास्टर वैल्यू को एबीसी से एसीसीडीई में बदल दिया गया था।

अतिरिक्त जानकारी: मैं अभी भी dev1 पर काम कर रहा था, इसलिए मैं अभी तक dev1 को मास्टर में मर्ज नहीं कर सकता, और फिर dev2 जिसे संपादित किया गया था और नई सुविधाओं के साथ जोड़ा गया था, उसे मास्टर में मिला दिया गया था। समस्या यह है कि जिस सुविधा पर मैं dev1 पर काम कर रहा था वह मास्टर के असंपादित संस्करण पर निर्भर करता है और अब मास्टर बदल दिया गया था और मैं अब dev1 पर अपने विकास पर काम नहीं कर सकता धन्यवाद

-2
Lee Yuan 6 जून 2021, 17:11

4 जवाब

सबसे बढ़िया उत्तर

एक अन्य विकल्प मास्टर के वर्तमान संस्करण को अपनी शाखा में मर्ज करना है। आपको अंततः उन कमिट्स के साथ रहना होगा, ताकि मर्ज को आसान बनाने के लिए आप उन्हें जल्द से जल्द अपनी शाखा में मर्ज कर सकें।

आपकी कार्य शाखा dev1 है। यहां वह प्रक्रिया है जिसका मैं उपयोग करता हूं।

मास्टर का नवीनतम संस्करण प्राप्त करें

गिट चेकआउट मास्टर

गिट पुल मूल मास्टर (मैं जो खींचता हूं उसके बारे में विशिष्ट होना पसंद करता हूं। यह मेरे सिर को सीधा रखता है)

अब जबकि मास्टर की आपकी स्थानीय कॉपी अप टू डेट है, मास्टर को अपनी शाखा में मर्ज करें। (यह आपकी शाखा को मास्टर में विलय करने से अलग है। आप ऐसा तभी करते हैं जब आप अपनी शाखा के साथ पूरी तरह से काम कर रहे हों।)

गिट चेकआउट dev1

गिट मर्ज मास्टर (यदि संघर्ष हैं, तो उन्हें लाजोस द्वारा वर्णित अनुसार हल करें)

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

0
Randy Leberknight 6 जून 2021, 18:26

तो, आपके पास तीन शाखाएँ हैं:

  • गुरुजी
  • शाखा1
  • शाखा २

शाखा 1 और शाखा 2 के अंदर किए गए काम थे। आइए मान लें कि आप शाखा 2 पर काम करते हैं और शाखा 1 पहले ही मास्टर में विलय हो चुकी है। आप निम्न कार्य कर सकते हैं

git checkout master
git merge branch2

हालाँकि, यदि दोनों शाखाएँ समान फ़ाइलों पर कार्य करती हैं, तो आपको विरोध हो सकता है। अगर आपका ऐसा कोई विरोध है, तो आप दौड़ सकते हैं

git status

यह देखने के लिए कि परस्पर विरोधी फाइलें क्या हैं। प्रत्येक फ़ाइल को खोलने पर आपको जैसे अनुभाग दिखाई देंगे

<<<<<<<
=======
>>>>>>>

ऊपर की पहली पंक्ति पहली शाखा को दर्शाती है और अंतिम पंक्ति अंतिम शाखा के अंत को दर्शाती है। लाइनों के बीच आपको विभिन्न संस्करण मिलेंगे। आपको यह पता लगाना होगा कि प्रत्येक में से कौन सी सही लाइनें हैं और कोड के काम करने तक संशोधन करें। अंत में, बीच की सामग्री के साथ ऊपर की पंक्तियों को हटा दें।

हालांकि, आप मास्टर के अंदर संघर्षों को हल करने से बचना चाह सकते हैं, क्योंकि यह केंद्रीय है और मेरी राय में समस्याओं को स्थानीय बनाना बेहतर है, इसलिए मैं वास्तव में क्या करता हूं, यह मानते हुए कि मैं शाखा 2 पर हूं:

git status
git add myfile1
git add myfile2
git commit
git pull
git push
git checkout master
git pull
git checkout branch2
git merge master

अगर विवाद हैं तो उन्हें सुलझाएं और फिर

git checkout master
git merge branch2

संपादित करें:

जाहिरा तौर पर मास्टर का एक पुराना संस्करण था जो शाखा 2 से अलग है, फिर भी, शाखा 1 उन कामों को जोड़ देगा जो इस बिंदु पर वांछित नहीं हैं। तो इसे पहले हल करें:

git checkout master

यह देखने के लिए कि मास्टर में क्या है। फिर देखें कि मास्टर में क्या किया गया था

git log

आप कमिट की एक सूची देखेंगे। नवीनतम कमिट ढूंढें जो अभी भी अच्छा है और आपको इसका हैश दिखाई देगा, जो एक लंबी अल्फ़ान्यूमेरिक स्ट्रिंग है। आइए अभी के लिए आईडी पर कॉल करें, लेकिन आपको इसके वास्तविक मूल्य की आवश्यकता होगी। अब वापस अपनी शाखा में जाएँ:

git checkout branch2

और उस कमिट को अपनी शाखा में मिला दें

git merge <hash>
0
Lajos Arpad 6 जून 2021, 18:08

आपको dev1 को मास्टर में विलय करना होगा और संघर्षों को हल करना होगा।

0
Antonio Petricca 6 जून 2021, 17:15

आपको अपनी dev1 शाखा को master पर रीबेस करना होगा (और किसी भी संभावित विरोध का समाधान करना होगा)।

git checkout dev1
git rebase master

देखें Git Branching - Rebasing

0
rsmeral 6 जून 2021, 17:14