आप एक मौजूदा मुद्दे पर एक नया पुल अनुरोध कैसे संलग्न करते हैं?


409

मुझे यकीन नहीं है, लेकिन मेरे पास "अंक 4" या शीर्षक में कुछ के साथ जीथब पुल अनुरोध बनाने की अस्पष्ट स्मृति है, और यह परियोजना में खुद को अंक 4 से जुड़ा हुआ है जिसे मैं इसे प्रस्तुत कर रहा था। मैंने हाल ही में इसे फिर से आज़माया और यह काम नहीं किया - इसने इसके बजाय एक बिल्कुल नया मुद्दा बनाया। मुझे नए पुल अनुरोध पृष्ठ पर "अटैच टू इशू" जैसे कोई विकल्प नहीं दिखते हैं, न ही "इस मुद्दे के लिए एक नया पुल अनुरोध खोलें" इस मुद्दे पृष्ठ पर। क्या ऐसा करने का कोई तरीका है, जिससे परियोजना मालिकों को अपने इश्यू पृष्ठ को साफ रखने और दोहराव से बचने में मदद मिल सके?

संपादित करें : स्पष्ट करने के लिए, मुझे पता है कि पुल अनुरोध बनाने से हमेशा एक नया मुद्दा बनता है । मैं इसके बजाय मौजूदा मुद्दे पर पुल अनुरोध को संलग्न करना चाहूंगा ।


1
मेरा मानना ​​है कि मेरा जवाब इस तथ्य को व्यक्त करता है कि आप जो सुविधा चाहते हैं (" मौजूदा मुद्दे पर एक पुल अनुरोध संलग्न करें ") अभी तक नहीं हो सकती है।
VONC

यह (और वह वास्तव में इस ट्वीट की पुष्टि करता है ) करता है, लेकिन इससे मुझे यह भी एहसास हुआ कि मेरा प्रश्न स्पष्ट हो सकता था।
MatrixFrog

मुझे उम्मीद है कि यह सुविधा गितुब प्राथमिकता सूची में उच्च है, coz कोड भालू वहाँ से प्यार होता है!
१२:३३ पर

2
सही उत्तर को मैसुकुमी में बदलना चाहिए, अब जो "फिक्स # 1" विधि उपलब्ध है। एपीआई के माध्यम से जाने की जरूरत नहीं है।
एडवर्ड एंडरसन

मुझे अभी भी मौजूदा मुद्दे पर पुल अनुरोध को संलग्न करने का कोई तरीका नहीं मिल रहा है। क्या मुझे कुछ याद आया? इस थ्रेड में दिए गए उत्तर से लगता है कि यह क्षमता मौजूद है, लेकिन मैं इसे नहीं ढूंढ सकता (यह हमेशा एक नया मुद्दा बनाता है)।
केविन जलबर्ट

जवाबों:


245

"हब" परियोजना ऐसा कर सकती है:

https://github.com/defunkt/hub

उस रिपॉजिटरी और शाखा में जिसे आप एक पुल अनुरोध भेजना चाहते हैं:

$ hub pull-request -i 4

यह GitHub API का उपयोग करता है, और मौजूदा शाखा नंबर 4 के लिए वर्तमान शाखा के लिए एक पुल अनुरोध संलग्न करता है।


संपादित करें: @atomicules द्वारा टिप्पणी: @MichaelMior द्वारा जवाब पर विस्तार करने के लिए एक पूर्ण उदाहरण है:

$ hub pull-request -i 4 -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE

12
brew install hubहोमब्रे के साथ स्थापित करने के लिए
जम्प करें

11
यह मेरे लिए काम नहीं करता है। पुल अनुरोध बनाने में त्रुटि कहते हैं: असंसाधित इकाई (HTTP 422)
Rubycut

11
@Rubycut मैं एक ही समस्या थी। इसके बजाय मैंने किया hub pull-request URL_TO_ISSUE, तो यह मेरे लिए काम किया। मुझे आश्चर्य है कि अगर -i ISSUE_NUMBERकेवल एक ही रिपॉजिटरी (यानी, एक कांटा नहीं) में काम करता है
माइकल Mior

30
@MichaelMior द्वारा जवाब पर विस्तार करने के लिए एक पूर्ण उदाहरण है:hub pull-request -b USERNAME_OF_UPSTREAM_OWNER:UPSTREAM_BRANCH -h YOUR_USERNAME:YOUR_BRANCH URL_TO_ISSUE
परमाणु

4
ध्यान दें कि यह केवल आपके द्वारा बनाए गए मुद्दों पर काम करता है: github.com/defunkt/hub/issues/189#issuecomment-6353354
Zach

237

मौजूदा अपस्ट्रीम समस्या के लिए एक पुल अनुरोध जोड़ने से आप सामान्य जीथूब साधन का उपयोग करके आसानी से समझ सकते हैं

किसी भी समर्थित कीवर्ड का उपयोग करके अपने संदेश में समस्या का संदर्भ लें :

  • बंद करे
  • बंद
  • बन्द है
  • ठीक कर
  • फिक्स
  • तय
  • संकल्प
  • निराकरण
  • संकल्प लिया

उदाहरण के लिए: "यह वचन # 116 ठीक करता है"

समस्या को संदर्भित करने वाले पाठ को आपकी प्रतिबद्धताओं के विषय पंक्ति में उपस्थित होने की आवश्यकता नहीं है।

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

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


31
"यह दृढ़ता से अनुशंसा की जाती है कि आप कुछ भी करते हैं जो उस मुद्दे के लिए एक अलग शाखा के लिए एक पुल अनुरोध का हिस्सा होगा, क्योंकि उस शाखा पर भविष्य में आने वाले को पुल अनुरोध में जोड़ा जाएगा" - बहुत अच्छा बिंदु। मेरे साथ एक बार ऐसा हुआ और यह काफी आश्चर्यजनक था।
MatrixFrog

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

1
@masukomi प्रोजेक्ट मेंटेनर को हल करने के लिए एक पुल अनुरोध आसान है - वे एक बटन के क्लिक के साथ परिवर्तनों को स्वीकार और विलय कर सकते हैं। एक पुल अनुरोध का उपयोग किए बिना एक कांटा में एक परिवर्तन खींचने के लिए, आपको कांटा को रिमोट के रूप में जोड़ना होगा, उनके बदलाव लाने होंगे, और उन्हें खुद को मर्ज करना होगा।
रोरी ओ'केन

2
मुझे लगता है कि आपने मेरी बात को रोरी मिस कर दिया। यदि आप एक पुल अनुरोध बनाते हैं और इसे मुद्दे में उल्लेख करते हैं (जैसा कि मैंने सुझाव दिया है), तो दोनों जुड़े हुए हैं, और आप अभी भी परिवर्तन प्राप्त करने के लिए एक बटन पर क्लिक कर सकते हैं।
मसुकोमी

2
यह तब मदद नहीं करता जब पुल अनुरोध एक बात पर है। हमारे वर्कफ़्लो विचारों के लिए समस्याएँ पैदा करना है, और एक बार हम उन विचारों पर काम शुरू करने के बाद सुविधा शाखाओं से अनुरोधों को खींचते हैं। पुल अनुरोध में एक कमेटी का उपयोग करके समस्या को बंद करने का मतलब है कि हम पिछली चर्चा को खो देते हैं कि इस मुद्दे को शामिल किया गया है, जिसमें अक्सर हैशिंग भी शामिल है जो भी समस्या को ठीक करता है / सुधार करता है। वास्तव में जिस चीज की जरूरत होती है वह है एक मुद्दे को स्ट्रेट रिक्वेस्ट में सीधा करने का एक तरीका जिससे एक बार काम शुरू हो जाए।
डैनियल बिंगहम

144

आप मौजूदा अनुरोध से पुल अनुरोध एपीआई के साथ एक पुल अनुरोध बना सकते हैं :

$ curl --user "smparkes" \
       --request POST \
       --data '{"issue": 15, "head": "smparkes:synchrony", "base": "master"}' \
       https://api.github.com/repos/technoweenie/faraday/pulls

यह एक पुल अनुरोध बनाता है:

  • technoweenieप्रोजेक्ट पर पूछें faraday(https://api.github.com/repos/ टेक्नोवेनी / फैराडे / पुल)
  • "कांटा" ("सिर" synchronyमें शाखा से खींचने के लिए smparkes: " smparkes : synchrony ")
  • करने masterमें शाखा technoweenieके कांटा (: "" आधार " गुरु ")
  • और 15 जारी करने के लिए पुल अनुरोध संलग्न करें ("मुद्दा": 15 )
  • पुल अनुरोध लेखक के साथ smparkes(--user " smparkes ")
  • आपको अपने GitHub पासवर्ड के लिए संकेत दिया जाएगा

1
मैंने उस लिंक के कुछ सैंपल कोड में कॉपी किया। आशा है कि आप बुरा न मानें, और कृपया मुझे बताएं कि क्या मैंने इसे गलत माना है!
MatrixFrog

3
आपको प्रमाणीकरण की भी आवश्यकता है, इसे ऊपर जोड़ने के लिए जोड़ें: -u "लॉगिन: पासवर्ड"
मोर्गोथ

2
मैं यह जोड़ना चाहूंगा कि यह विधि अभी भी काम करती है, लेकिन चर्चा पृष्ठ पर दो बार अपनी प्रतिबद्ध सूची को सूचीबद्ध करने का दुष्प्रभाव हो सकता है, अगर GitHub ने पहले ही इसे अपने संदेश ( उदाहरण ) में इस मुद्दे से निहित रूप से उठाया था । हालांकि, यह केवल आधिकारिक पुल अनुरोध पर एक बार आता है।
ग्रेग हास्किन्स

3
क्या इसे v3 API में अपडेट किया जा सकता है? GitHub ने v2 API को बंद कर दिया।
माइकल बेस्ट

1
@rsanchezsaez जैसा कि मैं अपने उत्तर में कहता हूं , आपके पासवर्ड के लिए अंतःक्रियात्मक रूप से संकेतित --user "smparkes:password"होने के --user "smparkes"लिए परिवर्तन ।
रोरी ओ'केन


10

यह अन्य उत्तर बताता है कि कैसे GURHub एपीआई के माध्यम से अंक से एक पुल अनुरोध बनाने के लिए cURL ( curl) का उपयोग करें । यह कैसे करना है कि HTTPie ( ) का उपयोग करें , जो एक आसान-से-पढ़ने और आसानी से संपादित करने वाली कमांड का उत्पादन करता है:http

$ http --auth "<your-GitHub-username>" \
       POST \
       https://api.github.com/repos/<issue-repo-owner>/<issue-repo-name>/pulls \
       issue=<issue-number> head=<your-GitHub-username>:<your-fork-branch-name> base=<issue-repo-branch-name>

जब संकेत दिया तब अपना GitHub पासवर्ड टाइप करें।

उदाहरण दिया

आप उपयोगकर्ता नाम के साथ GitHub में लॉग इन किया है smparkes और पासवर्ड बताइए! 2 । आपने टेक्नोवेरी के रेपो फैराडे को देखा , कुछ ऐसा सोचा, जिसे बदला जाना चाहिए और इसके लिए उस रेपो पर एक अंक बनाया, अंक # 15 । बाद में, आप पाते हैं कि किसी और ने आपका प्रस्तावित परिवर्तन नहीं किया है, और आपके पास इसे स्वयं करने के लिए कुछ समय भी है। आप अपने स्वयं के खाते में फैराडे का कांटा लगाते हैं , फिर अपने परिवर्तन लिखते हैं और उन्हें अपने कांटे को सिंक्रोनाइज़ नामक शाखा के अंतर्गत धकेल देते हैं । आपको लगता है कि टेक्नोचैनी को मास्टर में उन परिवर्तनों को खींचना चाहिएउसकी रेपो की शाखा। यह वह आदेश है जिसे आप इस स्थिति के लिए अपने पिछले अंक को एक अनुरोध में बदलने के लिए लिखेंगे:

$ http --auth "smparkes" \
       POST \
       https://api.github.com/repos/technoweenie/faraday/pulls \
       issue=15 head=smparkes:synchrony base=master
http: password for smparkes@api.github.com: hunter2

अब # 15 अंक एक निवेदन है।


3

यदि आप जीथब के साथ 2-कारक-उपयोग का उपयोग करते हैं, तो आपको अनुरोध में शीर्ष लेख के रूप में ऑर्टोटोकन प्रदान करना होगा:

curl -u "<your_username>:<your_pw>" \
     --header 'X-GitHub-OTP: <your_authtoken>' \
     --request POST \
     --data '{"issue":"<issue_nr>", "head":"<your_username>:<your_forks_branchname>", "base":"<upstream_branch>"}' \
     https://api.github.com/repos/<upstream_user>/<upstream_repo>/pulls

1
हां, 2FA यहां कई उत्तरों को काम करने से रोकता है। मेरे मामले में, मैंने अपने पासवर्ड के बजाय एक व्यक्तिगत एक्सेस टोकन बनाया और उसका उपयोग किया, जो काम करता है।
बर्टो

1

आप अपने मुद्दे के लिए पुल अनुरोध सबमिट करने के लिए Gub का उपयोग कर सकते हैं ।

यह आपको उचित कांटा / पुल-अनुरोध शैली का उपयोग करने में भी मदद करता है।

संपादित करें: 10/5/2013

अंक # 123 के लिए पुल-अनुरोध सबमिट करने के लिए Gub पाने के लिए, आपको निम्नलिखित को चलाने की आवश्यकता है:

$ gub start 123

यह एक नई शाखा अंक -123 बनाएगा। एक बार जब आप इस मुद्दे पर काम कर रहे हों, तो निष्पादित करें:

$ gub finish

देखा!

नोट: मैं गब रत्न का लेखक हूं।


1

इसके बजाय क्लाइंट की तरफ कर रही (साथ की hub, के रूप में ईसाई Oudard जवाब ), अब आप (फरवरी 2020) इस पर क्या कर सकते हैं सर्वर की ओर (github.com)

" देखें और लिंक की समस्याएं देखें और साइडबार से अनुरोध खींचें "

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

प्रलेखन :https://help.github.com/assets/images/help/pull_requests/link-issue-drop-down.png

और उस सुविधा के साथ एक खोज एपीआई है

सभी खुले मुद्दों को एक रिपॉजिटरी में खोजें जिसमें क्लोजिंग पुल अनुरोध संदर्भ संदर्भ linked:prक्वालिफायर के साथ हों।
इसी तरह, एक रिपॉजिटरी में सभी पुल अनुरोधों का पता लगाएं, जिनके साथ एक सहायक मुद्दा गायब है -linked:issue


0

Git-hub टूल का उपयोग करके , आप ऐसा कर सकते हैं:

$> git hub pull attach 123

यह समस्या # 123 को पुल अनुरोध # 123 में परिवर्तित कर देगा, इस प्रकार इस मुद्दे के बारे में सभी चर्चा को एक ही स्थान पर बनाए रखेगा।


0

यदि आपके पास 2FA सक्षम है, तो आप HTTP के साथ टोकन पास का उपयोग कर सकते हैं:

http POST \
    https://api.github.com/repos/<repo-owner>/<repo-name>/pulls \
    issue=2 head=issue_2 base=master
    "Authorization:token PUTAUTHTOKENHERE"

यह issue_2अंक # 2 को पुल अनुरोध में परिवर्तित करने के लिए शाखा का उपयोग करेगा ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.