GitHub पुल अनुरोध कैसे करें


283

GitHub पर होस्ट किए गए किसी अन्य रिपॉजिटरी के लिए मैं एक अनुरोध कैसे बनाऊं और / या भेजूं?


2
क्या यह पर्याप्त रूप से GitHub मदद पृष्ठों में नहीं बताया गया है ?
लैनजेड

27
@lanzz नहीं, मदद पृष्ठ में कुछ उपयोगी युक्तियां शामिल नहीं हैं, जो मैं चाहता हूं कि मैं अपना पहला पुल अनुरोध करने से पहले जानता था (नीचे देखें)।
VonC

9
@ जियानब का पृष्ठ निश्चित रूप से "पर्याप्त" है, लेकिन सीखने के कई तरीके हैं। मैंने जो करने का प्रयास किया वह एक शुरुआती स्तर का ट्यूटोरियल था। मुझे गितुब के स्पष्टीकरण में जो कमी महसूस हुई, वह यह थी कि: 1) यह एक स्रोत में निहित नहीं था (दो पृष्ठ जो स्पष्ट रूप से जुड़े नहीं हैं), 2) संक्षिप्त नहीं था (वे पृष्ठ बहुत लंबे, लंबे = भारी हैं), 3) था मुख्य खंडों में मानवीय शब्दों में नहीं समझाया गया है। शिक्षण में, एक अधिक अनुभवी शिक्षक के लिए यह जानना हमेशा कठिन होता है कि एक शुरुआत करने वाला क्या नहीं जानता। शुरुआत के जूतों में खुद को डालना यह लिखने में मेरा उद्देश्य था।
टिम पीटरसन 14

12
लंबे का मतलब भारी हो सकता है जिसका मतलब गर्भपात हो सकता है = कोई सीख नहीं । एक "बहुत से रास्ते के माध्यम से शामिल प्रक्रिया को समझना" समाप्त कर सकता है जो स्पष्ट रूप से उनमें से एक नहीं होगा। लौ युद्ध को समाप्त करने के लिए, जवाब देने की कोई आवश्यकता नहीं है, मैं समझता हूं कि आप कहां से आ रहे हैं।
टिम पीटरसन

8
आप अपने खुद के कांटे से एक पुल अनुरोध करते हैं। यह निश्चित रूप से मेरी मूल धारणा नहीं थी ।
डेरेक इलचुक

जवाबों:


236

(आधिकारिक " GitHub मदद 'पुल अनुरोधों का उपयोग करके पृष्ठ के अलावा ",
" GitHub में फोर्किंग बनाम ब्रांचिंग ", " GitHub में मूल और अपस्ट्रीम के बीच अंतर क्या है " यह भी देखें)

पुल-अनुरोध पर युगल युक्तियाँ:

यह मानते हुए कि आपने पहली बार एक रेपो को कांटा है , यहाँ आपको उस कांटे में क्या करना चाहिए जो आपके पास है:

  • एक शाखा बनाएँ : एक शाखा में अपने संशोधनों को अलग करें। masterजहां से आपको एक बार में कई संशोधनों को संचित करने और मिश्रण करने के लिए लुभाया जा सकता है, वहां से एक पुल अनुरोध न बनाएं ।
  • उस शाखा को रिबास करें : यहां तक ​​कि अगर आपने पहले ही उस शाखा से एक पुल अनुरोध किया था, तो इसे शीर्ष पर रिबास करना origin/master(यह सुनिश्चित करना कि आपका पैच अभी भी काम कर रहा है) पुल अनुरोध को स्वचालित रूप से अपडेट करेगा (किसी भी चीज़ पर क्लिक करने की आवश्यकता नहीं है)
  • उस शाखा को अपडेट करें : यदि आपका पुल अनुरोध अस्वीकार कर दिया गया है, तो आप बस नए कमिट जोड़ सकते हैं, और / या अपने इतिहास को पूरी तरह से फिर से कर सकते हैं: यह आपके मौजूदा पुल अनुरोध को फिर से सक्रिय करेगा।
  • "ध्यान दें" उस शाखा : यानी, अपने विषय को "तंग" बनाएं, हजारों वर्ग और सभी एप्लिकेशन को संशोधित न करें, केवल परिवर्तनों को छोटा रखते हुए एक अच्छी तरह से परिभाषित सुविधा को जोड़ें या ठीक करें ।
  • उस शाखा को हटा दें : एक बार स्वीकार कर लेने के बाद, आप उस शाखा को अपने कांटे (और git remote prune origin) पर सुरक्षित रूप से हटा सकते हैं । GitHub GUI आपके द्वारा अपने पुल-अनुरोध पृष्ठ में अपनी शाखा को हटाने का प्रस्ताव देगा।

नोट: पुल-रिक्वेस्ट को लिखने के लिए, " कैसे सही पुल रिक्वेस्ट लिखने के लिए " देखें (जनवरी 2015, GitHub)


मार्च 2016: नया पीआर मर्ज बटन विकल्प: " जीथब स्क्वैश समीक्षा टिप्पणियों के बाद पुल अनुरोध पर वेब इंटरफेस से शुरू होता है? "।

स्क्वाश

रेपो के अनुरक्षक को merge --squashउन पीआर कॉमों के लिए चुना जा सकता है।


एक पुल अनुरोध के बाद

अंतिम बिंदु के बारे में, अप्रैल 10, 2013 से, " पुन: डिज़ाइन किया गया मर्ज बटन ", शाखा आपके लिए हटा दी गई है:

नया मर्ज बटन

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

यह एक पुल अनुरोध को मर्ज करने के बाद शाखा को हटाने के सर्वोत्तम अभ्यास की पुष्टि करता है।


पुल-रिक्वेस्ट बनाम रिक्वेस्ट-पुल

  • पुल अनुरोध एक आधिकारिक "गिट" शब्द नहीं है।
    Gitrequest-pull
    विलय के लिए एक अनुरोध बनाने के लिए (!) आदेश का उपयोग करता है :
    यह "दो आउटपुट के बीच के बदलाव को मानक आउटपुट में सारांशित करता है, और दिए गए URL में जनरेट किए गए सारांश को शामिल करता है।"
    गितुब ने पहले ही दिन (फरवरी 2008) से अपना स्वयं का संस्करण लॉन्च किया , लेकिन मई 2010 में उस विशेषता को बदल दिया , जिसमें कहा गया था:

    Pull Request = Compare View + Issues + Commit comments
    

"रिपॉजिटरी" (sic) के लिए ई-नोट्स

<humour>

GitHub द्वारा उस (पुल अनुरोध) को ठीक से परिभाषित नहीं किया गया है!

सौभाग्य से, एक सच्चे व्यापारिक समाचार संगठन को पता होगा, और 'ई-नोट' द्वारा पुल-रिप्लेसमेंट को बदलने के लिए एक ई-नोट है :

https://pbs.twimg.com/media/BT_5S-TCcAA-EF2.jpg:large

तो अगर आपके रेपो टोरी को ई-नोट की जरूरत है ... फॉक्स बिजनेस से पूछें । वे जानते हैं।

</humour>


2
- @ VonC इसके लिए धन्यवाद। क्या आप यह बताने के लिए कुछ कोड प्रदान करेंगे कि आपने जो कहा है, उससे अलग क्या है? branchबनाम masterनिर्णय कुछ है कि एक वास्तव में प्रयोग करेंगे करने के लिए एक सैद्धांतिक समाधान से मेरे / Github का जवाब देने के लिए एक महत्वपूर्ण एक की तरह लगता है।
टिम पीटरसन

1
@timpeterson इस तथ्य को बताता है कि आप उस शाखा के भीतर इतिहास को पूरी तरह से बदल सकते हैं , और यह स्वचालित रूप से पुल अनुरोध को अपडेट कर देगा, यहां कुंजी है: क्योंकि अपस्ट्रीम प्रोजेक्ट के नवीनतम पर एक पुल अनुरोध किया जाना चाहिए। यदि उस अपस्ट्रीम रेपो में नया कमिट होता है, तो आपको अपनी शाखा को उसके ऊपर (उस ब्रांच के इतिहास को बदलते हुए) को रिबेट करना होगा, और उसे अपने कांटे पर वापस धकेलना होगा: जो आपके पुल अनुरोध (उसी शाखा पर आधारित) को स्वचालित रूप से अपडेट कर देगा।
VonC

4
मैं रिबासिंग पार्ट को नहीं समझ रहा हूं। वह क्या करता है? ( यह पेज रॉकेट साइंस की तरह लगता है लेकिन मेरा मानना ​​है कि यह नहीं है)। आप उस बिंदु पर क्या आदेश जारी करेंगे कि "विद्रोह"?
कैमिलो मार्टिन

1
@CamiloMartin यदि आप अपनी पीआर शाखा पर हैं, तो git pull --rebase upstream/masterवास्तव में ठीक है।
VonC

1
@vikramvi मास्टर मूल रेपो के साथ एक शाखा है जिसे आपने कांटा है। उस शाखा को हमेशा मूल रेपो का दर्पण होना चाहिए। आप अपने पीआर के लिए एक शाखा में अपने सुधारों को अलग करते हैं। आप केवल मास्टर रेपो में क्या है यह जानने के लिए (और इसके शीर्ष पर अपनी फिक्स शाखा को पुन: स्थापित करने के लिए, एक आसान पुल-अनुरोध मर्ज सुनिश्चित करने के लिए) का उपयोग करें
VonC

202

पुल अनुरोध करने का तरीका जानने के लिए मैंने सिर्फ जीथब पर दो अलग-अलग सहायता पृष्ठों का पालन किया (बुलेट बिंदुओं के रूप में नीचे लिंक)। निम्नलिखित कमांड लाइन कमांड भाग 1 के लिए हैंभाग 2 , वास्तविक पुल अनुरोध, पूरी तरह से जीथब की वेबसाइट पर किया जाता है।

$ git clone https://github.com/tim-peterson/dwolla-php.git
$ cd dwolla-php
$ git remote add upstream https://github.com/Dwolla/dwolla-php.git
$ git fetch upstream
// make your changes to this newly cloned, local repo 
$ git add .
$ git commit -m '1st commit to dwolla'
$ git push origin master
  • भाग 1 : कांटा किसी का रेपो: https://help.github.com/articles/fork-a-repo

    1. रेपो पर 'कांटा' बटन पर क्लिक करें, जिसमें आप योगदान करना चाहते हैं, इस मामले में: डोलोआ के PHP रेपो (ड्वोल्ला / डोवाल-पीएचपी)
    2. इस मामले में अपने नए बनाए गए कांटे के लिए URL प्राप्त करें: https://github.com/tim-peterson/dwolla-php.git (tim-peterson / dwolla-php)
    3. git clone->cd dwolla-php->git remote->git fetchअपने कंप्यूटर में कहीं न कहीं अपने कांटे को क्लोन करने के लिए ऊपर का क्रम टाइप करें (जैसे, इस मामले में इसे "कॉपी / पेस्ट करें" third_party TimPeterson$:) और इसे मास्टर रेपो (डवोला / डॉवा-पीएचपी) के साथ सिंक करें
    4. अपने स्थानीय रेपो में अपने बदलाव करें
    5. git add->git commit->git pushदूरस्थ रेपो में आपके परिवर्तनों को धकेलने के लिए ऊपर दिए गए क्रम को टाइप करें , अर्थात, Github पर अपना कांटा (टिम-पीटरसन / dwolla-php)
  • भाग 2 : पुल-अनुरोध करें: https://help.github.com/articles/use-pull-requests

    1. पर जाने के अपने कांटा के Github पर वेबपेज ( https://github.com/tim-peterson/dwolla-php )
    2. 'पुल-रिक्वेस्ट' बटन पर क्लिक करें
    3. पुल-रिक्वेस्ट को एक नाम दें, आपके द्वारा किए गए परिवर्तनों का विवरण भरें, सबमिट बटन पर क्लिक करें।
    4. हो गया!!

4
- @ अलेक्सग्रे, मैंने बैश प्रॉम्प्ट को छोड़ दिया, उदाहरण के लिए, Tims-MacBook-Pro:third_party TimPeterson$क्योंकि यह एक शुरुआती ट्यूटोरियल है और उन संकेतों से उपयोगकर्ता को उन्मुख करने में मदद मिलती है।
टिम पीटरसन

1
हाँ। धन्यवाद। एक कार्यशील उदाहरण जिसका मैं अनुसरण कर सकता हूं। आपके पास वह गिट हब क्यों नहीं है?
सेवेनथर्थ

बाद git fetch upstream, आप अपने स्थानीय प्रति के साथ नदी के ऊपर परिवर्तन मर्ज करने के लिए का उपयोग कर की जरूरत नहीं है git checkout masterतो git merge upstream/master?
स्पार्कवॉक

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

1
@ हिमांशुशेखर हाँ, लेकिन आपको जीथब डेस्कटॉप ऐप या उनके एपीआई का उपयोग करने की आवश्यकता है। मेरे लिए ब्राउज़र आसान है।
टिम पीटरसन

70

पुल अनुरोध करने के लिए आपको निम्नलिखित चरण करने की आवश्यकता है:

  1. कांटा एक रिपॉजिटरी (जिससे आप एक पुल अनुरोध करना चाहते हैं)। बस रिपॉजिटरी पेज पर फोर्क बटन पर क्लिक करें और आपके पास एक अलग जीथॉब रिपॉजिटरी होगी जो आपके gubub यूजरनेम से पहले होगी।
  2. अपने स्थानीय मशीन के भंडार पर क्लोन करें। आपके स्थानीय मशीन पर आपके द्वारा स्थापित गिथब सॉफ़्टवेयर आपके लिए ऐसा कर सकता है। रिपॉजिटरी नाम के पास क्लोन बटन पर क्लिक करें।
  3. फ़ाइलों में स्थानीय परिवर्तन / कमिट करें
  4. परिवर्तनों को सिंक करें
  5. अपने गिथब पर जाएँ और भंडार बटन के अलावा "तुलना करें और समीक्षा करें" बटन पर क्लिक करें। (बटन में आइकन है - कोई टेक्स्ट नहीं)
  6. एक नया पृष्ठ आपके परिवर्तन दिखाएगा और फिर पुल अनुरोध लिंक पर क्लिक करेगा, जो आपके द्वारा भेजी गई रिपॉजिटरी के मूल मालिक को अनुरोध भेजेगा।

मुझे यह जानने में थोड़ा समय लगा, आशा है कि यह किसी की मदद करेगा।


3
यह मेरे लिए स्पष्ट नहीं था कि आपको एक पुल अनुरोध करने में सक्षम होने से पहले एक रेपो को फोर्क करने की आवश्यकता थी। मुझे लगा कि कमिटेड पेंडिंग ब्रांच को किसी तरह से जाना होगा, जिसमें पब्लिक राइट एक्सेस हो और फिर वहां से विलय हो जाए। धन्यवाद!
क्रिस एरिना

16

मैंने लोगों को अपना पहला GitHub पुल अनुरोध बनाने में मदद करने के लिए एक परियोजना शुरू की है। आप यहां अपना पहला पीआर बनाने के लिए हाथों पर ट्यूटोरियल कर सकते हैं

वर्कफ़्लो के रूप में सरल है

  • गितुब में रेपो को कांटा
  • क्लोन रेपो बटन पर क्लिक करके क्लोन यूआरएल प्राप्त करें
  • टर्मिनल पर जाएं और चलाएं git clone <clone url you copied earlier>
  • आपके द्वारा किए जा रहे परिवर्तनों के लिए एक शाखा बनाएं git checkout -b branch-name
  • आवश्यक परिवर्तन करें
  • अपने बदलाव करें git commit
  • GitHub पर अपने कांटे में अपने परिवर्तन पुश करें git push origin branch-name
  • एक Compare and pull requestबटन देखने के लिए GitHub पर अपने कांटे पर जाएं
  • इस पर क्लिक करें और आवश्यक विवरण दें

15

हममें से जिनके पास एक github.com खाता है, लेकिन केवल एक गंदा त्रुटि संदेश मिलता है जब हम "git" को कमांड-लाइन में टाइप करते हैं, यहां बताया गया है कि यह सब आपके ब्राउज़र में कैसे किया जाता है :)

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

3

मैंने टिम पीटरसन के निर्देशों का पालन किया लेकिन मैंने अपने परिवर्तनों के लिए एक स्थानीय शाखा बनाई। हालाँकि, पुश करने के बाद मुझे GitHub में नई शाखा दिखाई नहीं दे रही थी। समाधान को पुश कमांड में -u जोड़ना था:

git push -u origin <branch>

क्या आपने url के उपर्युक्त में 2 उपयोगकर्ता नाम देखे हैं? पहला tim-petersonदूसरा हैDwolla
टिम पीटरसन

3
इसके अलावा, यह मेरे उत्तर के लिए एक टिप्पणी के रूप में बेहतर है। आपको कुछ डाउनवोट मिल सकते हैं।
टिम पीटरसन

1

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

यहाँ है कि आप इसे कैसे चलाते हैं:

github-make-pr-branch ssh your-github-username orig_repo_user orig_repo_name new-feature

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


0

सरल GitHub पुल अनुरोध है वेब इंटरफेस से Git का उपयोग किए बिना।

  1. GitHub खाता पंजीकृत करें, फिर लॉगिन करें उस पृष्ठ पर जाएं जिसमें आप बदलना चाहते हैं।
  2. पेंसिल आइकन पर क्लिक करें ,

    स्थान के पास पाठ की खोज करें, जो भी संपादन आप चाहते हैं, उन्हें पुष्टि करने के लिए पूर्वावलोकन करें। प्रस्तावित बदलाव को 50 अक्षरों तक का विवरण दें और वैकल्पिक रूप से एक विस्तारित विवरण फिर प्रस्ताव फ़ाइल बदलें बटन पर क्लिक करें।

  3. यदि आप इसे पढ़ रहे हैं तो आपके पास रिपॉजिटरी (प्रोजेक्ट फ़ोल्डर) तक पहुंच नहीं होगी, इसलिए GitHub आपके खाते में रिपॉजिटरी (वास्तव में एक शाखा) की एक प्रति बनाएगा। क्लिक करें पुल बनाएं अनुरोध बटन।

  4. पुल अनुरोध का विवरण दें और कोई भी टिप्पणी जोड़ें फिर पुल अनुरोध करें बटन पर क्लिक करें।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.