आप वेब इंटरफ़ेस में GitHub रेपो फोर्क को कैसे अपडेट करते हैं?


58

मेरे पास एक Github भंडार है जिसे मैंने कई महीने पहले किसी अन्य परियोजना से लिया था। यह अब कई महीनों बाद है और मूल मास्टर रेपो बदल गया है। मैं उन परिवर्तनों को प्रतिबिंबित करने के लिए अपने रेपो को अपडेट करना चाहूंगा। क्या यह गितुब वेब इंटरफेस में संभव है? या क्या मुझे केवल रेपो को हटाने और फिर से कांटा करने की आवश्यकता है?




जवाबों:


43

आप कोशिश कर सकते हैं और उल्टा कर सकते हैं कि पुल अनुरोध कैसे होता है।

  1. अपने कांटे पर जाएं
  2. एक निवेदन जारी करें

    डिफ़ॉल्ट रूप से यह दाईं ओर ( हेड रेपो ) पर आपका कांटा होगा जो बाईं ओर के ओरिजिनल रेपो ( बेस रेपो ) में इसके कमिट और बदलावों को आगे बढ़ाने का अनुरोध करता है ।

  3. बेस रेपो और हेड रेपो दोनों के लिए ड्रॉप डाउन पर क्लिक करें और एक दूसरे के रेपो का चयन करें।

    आप चाहते हैं कि आपका बाईं ओर सूचीबद्ध होना (परिवर्तनों को स्वीकार करना) जबकि मूल रिपॉजिटरी दाईं ओर है (एक धक्का के साथ परिवर्तन)। जैसा कि इस चित्र में दिखाया गया है:

    कांटा खुद पर किया

  4. पुल अनुरोध भेजें

    यदि आपके कांटे में कोई बदलाव नहीं हुआ है, तो आपको मर्ज को स्वचालित रूप से स्वीकार करने में सक्षम होना चाहिए।

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


3
यह अभी भी काम करता है लेकिन हाँ यह आदर्श नहीं है। यह निश्चित रूप से सिर्फ एक चाल है। इसे करने का उचित तरीका नहीं है।
जेक विल्सन

3
एक बुरे विचार की पुष्टि की। यह रिपॉजिटरी को इस तरह से प्रदूषित करता है कि जीथब आपको मूल परियोजना के लिए एक खाली प्रतिबद्धता का अनुरोध करने का सुझाव देता है। उदाहरण के लिए देखें github.com/dthommes/RoboSpring/pull/3 - एक बार जब मैं इसे करने के लिए योगदान, तो मैं सिंक किया गया है और अब Github मुझे पुश करने के लिए एक "मेरे कांटा सिंक कर रहा है" के रूप में "मर्ज dthommes से पुल अनुरोध # 1 / मास्टर लेबल प्रतिबद्ध चाहता है … ”
usr-local-

1
मुझे नहीं लगता कि यह अब और काम करता है। हालांकि यह थोड़ा अजीब लगता है लेकिन ऐसा करने का कोई सरल तरीका नहीं है।
टॉबी एलन

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

4
GitHub को एक "सिंक फोर्क" बटन जोड़ना चाहिए ताकि आप को एक मिलियन PRs बनाने न हों। अभी के लिए मैं अपने कांटे को अपडेट करने के लिए कमांड लाइन का उपयोग कर रहा हूं
Suici Doga

22

यह आसान होने वाला है।

  1. पर जाएं Forked रेपो (तुम्हारा) और बस क्लिक करें बटन - "नया पुल अनुरोध"।
  2. खुलने वाले पृष्ठ पर, ड्रॉपडाउन के नीचे संदेश में "स्विचिंग बेस" की एक छोटी सी कड़ी होती है। लिंक पर क्लिक करें।
  3. अब यह स्वचालित रूप से आपके मूल रेपो की ओर ले जाएगा। Create Pull Request बटन पर क्लिक करें और कुछ कमिट मैसेज लिखें।
  4. अब यह स्वचालित रूप से आपके forked repo की ओर ले जाएगा, मर्ज पुल अनुरोध पर क्लिक करें और समाप्त करने के लिए मर्ज की पुष्टि करें

आपको स्पष्ट करना चाहिए कि उन हरे बटन क्या हैं और यह एक शानदार प्रतिक्रिया होगी ....
रोड्रिगो ग्रेका

यह निश्चित रूप से 4/2016 के रूप में सबसे अच्छा जवाब है।
dr01

7
इस पद्धति के साथ समस्या यह है कि यह आपकी शाखा के लिए एक अतिरिक्त प्रतिबद्धता जोड़ता है, इसलिए यह वास्तव में अपस्ट्रीम रेपो के साथ सिंक में नहीं है
'13

@Mottie क्या हमारे लिए यह जानने का एक तरीका है कि क्या हमारा कांटा नवीनतम अपस्ट्रीम संस्करण के पीछे है, और वास्तव में उन्हें खींचने के बिना, परिवर्तनों का एक प्रकार देखें?
सुजय फड़के

1
@SujayPhadke शाखा चयन बटन के नीचे आपके मुख्य कांटे पर रेपो पृष्ठ पर एक संदेश होगा "यह शाखा xxxx: मास्टर के पीछे xx है।" जैसे कि अंतर देखने के लिए, संदेश के समान पंक्ति में "तुलना" बटन है; या आप इस लिंक पर जा सकते हैं:https://github.com/{user}/{forkedRepoName}/compare/master...{originalRepo}:master
Mottie

3

रिमोट अपस्ट्रीम रिपॉजिटरी से बदलाव के साथ एक कांटेक्ट गिटहब रेपो को कैसे अपडेट करें


GitHub मदद से निर्देश:

एक दूरस्थ कांटा का विन्यास

कांटा समाना


सेटअप / ऑपरेशन निर्देश:

गेट बैश (विंडोज) या लिनक्स / मैक टर्मिनल खोलें

यदि आपने अभी तक अपनी रिपॉजिटरी को क्लोन नहीं किया है, तो आपको अपने डेवलपमेंट फोल्डर की वर्किंग डायरेक्टरी को बदलना होगा और इसे अपने वर्कस्टेशन पर क्लोन करना होगा।

$ git clone https://github.com/YOUR_USERNAME/YOUR_FORK.git

अपने वर्कस्टेशन पर अपने फोर्क्ड रेपो की वर्किंग डायरेक्टरी को बदलें।

$ cd /user/development/my_forked_repo/

अपने कांटे के लिए वर्तमान कॉन्फ़िगर किए गए दूरस्थ रिपॉजिटरी को सूचीबद्ध करें।

 $ git remote -v

origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin  https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)

एक नया रिमोट अपस्ट्रीम रिपॉजिटरी निर्दिष्ट करें जो कांटा के साथ समन्वयित होगा।

$ git remote add upstream https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git

अपने कांटे के लिए आपके द्वारा निर्दिष्ट नई अपस्ट्रीम रिपॉजिटरी को सत्यापित करें।

$ git remote -v

origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (fetch)
origin    https://github.com/YOUR_USERNAME/YOUR_FORK.git (push)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (fetch)
upstream  https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY.git (push)

शाखाओं और उनके संबंधित को अपस्ट्रीम रिपॉजिटरी से लाएं। मास्टर के लिए एक स्थानीय शाखा, अपस्ट्रीम / मास्टर में संग्रहीत किया जाएगा।

$ git fetch upstream

remote: Counting objects: 75, done.
remote: Compressing objects: 100% (53/53), done.
remote: Total 62 (delta 27), reused 44 (delta 9)
Unpacking objects: 100% (62/62), done.
From https://github.com/ORIGINAL_OWNER/ORIGINAL_REPOSITORY
 * [new branch]      master     -> upstream/master

अपने कांटे की स्थानीय मास्टर शाखा देखें।

$ git checkout master

Switched to branch 'master'

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

$ git merge upstream/master

Updating a422352..5fdff0f
Fast-forward
README                    |    9 -------
README.md                 |    7 ++++++
 2 files changed, 7 insertions(+), 9 deletions(-)
 delete mode 100644 README
 create mode 100644 README.md

यदि आपकी स्थानीय शाखा के पास कोई अनोखा काम नहीं है, तो Git इसके बजाय "फास्ट-फॉरवर्ड" करेगा:

$ git merge upstream/master

Updating 34e91da..16c56ad
Fast-forward
 README.md                 |    5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

अब आपको अपने कांटे पर कमिट्स को धकेलना होगा।

$ git push

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


5
आपके विस्तृत उत्तर के लिए धन्यवाद, हालांकि आशा वेब इंटरफेस का उपयोग करके समाधान के लिए थी।
टॉबी एलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.