git मैं गिटहब फोर्कड रिपोजिटरी कैसे अपडेट करूं?





8 Answers

मई 2014 से शुरू, गिटहब से सीधे एक कांटा अद्यतन करना संभव है। यह अभी भी सितंबर 2017 के रूप में काम करता है, लेकिन यह एक गंदे प्रतिबद्ध इतिहास का कारण बन जाएगा।

  1. गिटहब पर अपना कांटा खोलें।
  2. पुल अनुरोधों पर क्लिक करें।
  3. न्यू पुल अनुरोध पर क्लिक करें। डिफ़ॉल्ट रूप से, गिटहब मूल की तुलना आपके फोर्क से करेगा, और यदि आपने कोई बदलाव नहीं किया है तो तुलना करने के लिए कुछ भी नहीं होना चाहिए।
  4. यदि आप उस लिंक को देखते हैं तो आधार को स्विच करने पर क्लिक करें। अन्यथा, मैन्युअल रूप से आधार कांटा को अपने कांटा में छोड़ दें, और ऊपर की ओर सिर का कांटा सेट करें। अब गिटहब मूल के साथ आपके कांटे की तुलना करेगा, और आपको सभी नवीनतम परिवर्तन देखना चाहिए।
  5. पुल अनुरोध बनाएं और अपने पुल अनुरोध (उदाहरण के लिए, Update from original ) पर अनुमानित नाम असाइन करें।
  6. पुल अनुरोध मर्ज करने के लिए नीचे स्क्रॉल करें , लेकिन अभी तक कुछ भी क्लिक न करें।

अब आपके पास तीन विकल्प हैं, लेकिन प्रत्येक एक कम से कम स्वच्छ प्रतिबद्ध इतिहास का नेतृत्व करेगा।

  1. डिफ़ॉल्ट एक बदसूरत विलय प्रतिबद्धता पैदा करेगा।
  2. यदि आप ड्रॉपडाउन पर क्लिक करते हैं और "स्क्वाश और विलय" चुनते हैं, तो सभी हस्तक्षेप करने वाली गतिविधियों को एक में squashed किया जाएगा। यह अक्सर ऐसा कुछ होता है जिसे आप नहीं चाहते हैं।
  3. यदि आप रीबेस और विलय पर क्लिक करते हैं, तो सभी कामों को आपके साथ "बनाया जाएगा", मूल पीआर आपके पीआर से लिंक होंगे, और गिटहब प्रदर्शित करेगा कि This branch is X commits ahead, Y commits behind <original fork>

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

git github

मैंने हाल ही में एक परियोजना को फोर्क किया और कई फिक्स लागू किए। तब मैंने एक पुल अनुरोध बनाया जिसे बाद में स्वीकार किया गया।

कुछ दिनों बाद एक और योगदानकर्ता ने एक और योगदान दिया। तो मेरे कांटा में वह परिवर्तन नहीं है।

मैं अपने कांटा में उस परिवर्तन को कैसे प्राप्त कर सकता हूं? क्या मुझे योगदान देने के लिए और बदलाव होने पर मुझे अपने कांटा को हटाने और फिर से बनाने की ज़रूरत है? या कोई अद्यतन बटन है?




बहुत से जवाब आपके फोर्क को पैरेंट रिपोजिटरी से आगे ले जाने के अंत में समाप्त होते हैं। यह उत्तर here मिले चरणों का सारांश देता here जो आपके कांटे को माता-पिता के समान प्रतिबद्धता में ले जाएंगे।

  1. निर्देशिका को अपने स्थानीय भंडार में बदलें।

    • यदि आप git checkout master नहीं हैं तो मास्टर शाखा पर स्विच करें
  2. अभिभावक को रिमोट रिपोजिटरी के रूप में जोड़ें, git remote add upstream <repo-location>

  3. समस्या git fetch upstream
  4. समस्या git rebase upstream/master

    • इस चरण में आप यह जांचते हैं कि git status टाइप करके क्या विलय किया जाएगा
  5. समस्या git push origin master

इन आदेशों के बारे में अधिक जानकारी के लिए, here देखें।




प्रस्तावना: आपका कांटा "मूल" है और आपके द्वारा फोर्क किया गया भंडार "अपस्ट्रीम" है।

आइए मान लीजिए कि आपने अपने कंप्यूटर पर पहले से ही अपने फोर्क को इस तरह के कमांड के साथ क्लोन किया है:

git clone git@github.com:your_name/project_name.git
cd project_name

यदि यह दिया जाता है तो आपको इस क्रम में जारी रखने की आवश्यकता है:

  1. अपने क्लोन रिपोजिटरी ("मूल") में "अपस्ट्रीम" जोड़ें:

    git remote add upstream git@github.com:original_author/project_name.git
    
  2. "अपस्ट्रीम" से काम (और शाखाएं) प्राप्त करें:

    git fetch upstream
    
  3. अपने कांटा ("मूल") की "मास्टर" शाखा पर स्विच करें:

    git checkout master
    
  4. अपनी "मास्टर" शाखा के परिवर्तनों को रोकें:

    git stash
    
  5. अपने "मूल" की "मास्टर" शाखा में "अपस्ट्रीम" की "मास्टर" शाखा से परिवर्तनों को मर्ज करें:

    git merge upstream/master
    
  6. यदि कोई हो तो विलय विवादों को हल करें और अपना विलय करें

    git commit -am "Merged from upstream"
    
  7. अपने कांटा में परिवर्तन पुश करें

    git push
    
  8. अपने चुने हुए परिवर्तन वापस प्राप्त करें (यदि कोई हो)

    git stash pop
    
  9. हो गया! बधाई हो!

गिटहब भी इस विषय के लिए निर्देश प्रदान करता है: help.github.com/articles/syncing-a-fork




इस उत्तर की तारीख के अनुसार, गिटहब ने वेब इंटरफ़ेस में यह सुविधा नहीं दी है ( या अब मैं नहीं कहूंगा? ) हालांकि, आप इसके लिए अपना वोट जोड़ने के लिए support@github.com से पूछ सकते हैं।

इस बीच, गिटहब उपयोगकर्ता बार्डिबरबोरो ने ऐसा करने के लिए एक टूल बनाया है: https://upriver.github.io/

स्रोत यहां है: https://github.com/upriver/upriver.github.io




नीचे दिए गए चरणों का पालन करें। मैंने उनकी कोशिश की और इससे मेरी मदद की।

अपनी शाखा में चेकआउट करें

सिंटेक्स: गिट शाखा आपके डेवलपमेंट ब्रंच
उदाहरण: गिट चेकआउट मास्टर

नवीनतम कोड प्राप्त करने के लिए स्रोत भंडार शाखा खींचें

सिंटेक्स: गिट खींचें https://github.com/tastejs/awesome-app-ideas मास्टर
उदाहरण: गिट खींचें https://github.com/ORIGINAL_OWNER/ORIGINAL_REPO.git BRANCH_NAME




मैं इस लाइन के साथ अपने फोर्कड रेपो अपडेट करता हूं:

git pull https://github.com/forkuser/forkedrepo.git branch

यदि आप यहां पोस्ट किए गए अन्य समाधानों के रूप में, अपने प्रोजेक्ट में एक और रिमोट एंडपॉइंट जोड़ना नहीं चाहते हैं तो इसका उपयोग करें।




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

ओपन मेनू वीसीएसगिट

और दो अंतिम पॉपअप मेनू आइटम पर ध्यान दें:

  • मेरे गिटहब कांटा को दोबारा दोहराएं

  • पुल अनुरोध बनाएँ

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

(मैं एंड्रॉइड स्टूडियो 3.0 का उपयोग "गिट एकीकरण" और "गिटहब" प्लगइन के साथ करता हूं।)




यह आपके भंडार के आकार और आपने इसे कैसे फोर्क किया है, इस पर निर्भर करता है।

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

इसे पढ़ने का प्रयास करें। यह वर्णन करता है कि बड़े गिट भंडारों को कैसे संभालें और नवीनतम परिवर्तनों के साथ उन्हें कैसे अपस्ट्रीम करें।




Related


Tags

git   github