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



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>

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

Question

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

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

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




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

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

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

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

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

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

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




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

अपने कांटा के स्थानीय क्लोन से अपने अपस्ट्रीम रिमोट बनाएं। आपको केवल एक बार ऐसा करने की ज़रूरत है:

git remote add upstream https://github.com/whoever/whatever.git

फिर जब भी आप अपस्ट्रीम रिपोजिटरी मास्टर शाखा के साथ पकड़ना चाहते हैं तो आपको यह करना होगा:

git checkout master
git pull upstream master

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

तो शुरुआती अपस्ट्रीम सेटअप और मास्टर चेकआउट से पहले, आपको बस इतना करना है कि अपस्ट्रीम के साथ अपने मास्टर को सिंक करने के लिए निम्न आदेश चलाएं: गिट पुल अपस्ट्रीम मास्टर




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

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

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




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

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

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




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

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

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

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

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




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

$ cd project-name

$ git remote add upstream https://github.com/user-name/project-name.git
 # Adding the upstream -> the main repo with which you wanna sync

$ git remote -v # you will see the upstream here 

$ git checkout master # see if you are already on master branch

$ git fetch upstream

और वहां आप जाने के लिए अच्छे हैं। मुख्य भंडार में सभी अद्यतन परिवर्तन आपके फोर्क भंडार में धकेल दिए जाएंगे।

प्रोजेक्ट में अद्यतित रहने के लिए "fetch" कमांड अनिवार्य है: केवल "गिट फ़ेच" करने पर आपको सूचित किया जाएगा कि आपके सहयोगियों को दूरस्थ सर्वर पर किए गए परिवर्तनों के बारे में सूचित किया जाएगा।

आप अभी भी आगे के प्रश्नों के लिए here जा सकते हैं




बहुत से जवाब आपके फोर्क को पैरेंट रिपोजिटरी से आगे ले जाने के अंत में समाप्त होते हैं। यह उत्तर 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 देखें।




Related



Tags

git git   github