Github में डिफ़ॉल्ट रूप से एक अलग शाखा में मर्ज पुल अनुरोध


122

Github पर होस्ट किए गए मेरे रेपो में एक पुल अनुरोध आता है। डिफ़ॉल्ट रूप से इसे masterशाखा में मिला दिया जाता है ।

क्या मेरे लिए ऐसा कोई तरीका है जिससे परिवर्तन को शाखा में विलय किया जा सके?

जवाबों:


86

15.08.2016 तक GitHub GUI के माध्यम से पुल अनुरोध की लक्ष्य शाखा को बदलने की अनुमति देता है। Editशीर्षक के बगल में क्लिक करें , फिर ड्रॉपडाउन से शाखा का चयन करें।

स्क्रीनशॉट

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


1
यह इस प्रश्न का सही उत्तर होना चाहिए (गीथहब में अपग्रेड होने के बाद)।
22

यह सुविधा अब (2018-02-15 तक) मौजूद नहीं है, क्या यह है? हाल के पुल अनुरोध में लक्ष्य शाखा को हल्के नीले रंग की पृष्ठभूमि पर उसी नीले फ़ॉन्ट में प्रदर्शित किया जाता है जैसे स्रोत रिपॉजिटरी / शाखा और अब बटन नहीं।
cgogolin

12
आह! ऐसा होता है! सबसे पहले "एडिट" पर क्लिक करना होगा (जो उपरोक्त स्क्रीनशॉट से स्पष्ट नहीं है)। मैंने इसे नजरअंदाज कर दिया। माफ़ करना।
cgogolin

@cgogolin यह इंगित करने के लिए धन्यवाद - मैं भी भ्रमित था, जब तक कि मैंने आपकी टिप्पणी को नहीं पढ़ा और संपादन बटन पर क्लिक किया।
मुहका

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

55

सबमिटर तब बदल सकता है जब वे पुल अनुरोध जारी करते हैं, लेकिन एक बार जब वे इसे जारी करते हैं तो आप इसे बदल नहीं सकते हैं।

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

आप पुल अनुरोध के घटकों के साथ काम करने में सहायक hubमणि पा सकते हैं ।

वह मणि मैनुअल प्रक्रिया को लपेटता है, जो है:

  1. अपने स्थानीय चेकआउट में कांटे के लिए एक रिमोट जोड़ें
  2. उस रिमोट को प्राप्त करें।
  3. git checkout ${target_branch} && git merge ${remote}/${branch}
  4. git push origin ...

1
यदि मैं मैन्युअल रूप से विलय और धक्का देता हूं, तो क्या गिथब को एहसास होगा कि पुल अनुरोध प्रभावी रूप से पूरा हो गया है? दूरस्थ पृथक रेपो (कांटा) से विलय करने के बारे में कोई संकेत?
इयोनोक

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

मैं git merge --no-ff ...उनके उत्तर में @GuillermoMansilla उल्लेख के रूप में उपयोग करने की सलाह दूंगा।
जेजमोंटेस

3
"एक बार जब वे इसे जारी करते हैं तो आप इसे बदल नहीं सकते हैं" - अब अगस्त 2016 की स्थिति नहीं है! नीचे @maliayas का जवाब देखें: stackoverflow.com/a/38985999/12484
जॉन श्नाइडर

1
मैंने इस प्रक्रिया का आज (Mar 3 2017) पालन किया। मैंने पुल अनुरोध को दूसरी शाखा में डाउनलोड किया और इसके लिए कुछ अतिरिक्त सुधार किए, फिर मास्टर में विलय कर दिया। एक बार मास्टर में समाप्त हो गए पुल अनुरोध से आने के बाद, GitHub ने स्वचालित रूप से पुल अनुरोध को बंद कर दिया।
इवान क्रिव्याकोव

14

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

$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*

यदि आप पहली बार अपनी .git/configफ़ाइल में निम्न पंक्ति जोड़ते हैं तो केवल ऊपर दिए गए कमांड सीधे काम करते हैं :

fetch = +refs/pull/*/head:refs/remotes/symbolic_name_origin_or_upstream/pr/*

जो कुछ भी करता है वह आपको सभी पुल अनुरोधों को डाउनलोड करने की अनुमति देता है । चूंकि विशाल रेपो के लिए वांछित नहीं हो सकता है, GitHub ने git fetch origin pull/ID/head:BRANCHNAMEसिंटैक्स की सुविधा के लिए निर्देशों को संशोधित किया , जो कॉन्फ़िगरेशन फ़ाइल के संशोधन से बचा जाता है और केवल उस एकल पुल अनुरोध को डाउनलोड करता है।


8

यद्यपि आप मौजूदा पुल अनुरोध को नहीं बदल सकते हैं क्योंकि यह आपका नहीं है आप आसानी से एक नया बना सकते हैं यदि संबंधित स्रोत भंडार अभी भी मौजूद है - हाँ, भले ही वह किसी और का हो।

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

फिर अपने स्वयं के भंडार पर वापस जाएं और नए पुल अनुरोध को स्वीकार करें। देखा!


क्या यह काम करता है अगर उन्होंने अपनी रिपॉजिटरी बदल दी है? कोई यह कैसे सुनिश्चित करता है कि यह "समान है?"
ragerdl

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

2
एक स्थानीय रेपो तक पहुँच के बिना, सीधे GitHub पर ऐसा करने का एकमात्र तरीका है।
kopischke

8

डैनियल पिट्समैन के समाधान के साथ कुछ भी गलत नहीं है, हालांकि मैं उन मर्जों को "नो फास्ट फॉरवर्ड" के रूप में मानता हूं, अर्थात: चरण संख्या 3 के लिए बदलना:

git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}

उपयोग करने से --no-ff, इतिहास को पढ़ना आसान हो जाएगा। यह स्पष्ट रूप से कहेगा कि $nकमिट से आया है $branch, और यह आपके जीवन को भी आसान बना देगा यदि आपको उस शाखा में किए गए कुछ को वापस करने की आवश्यकता है।

इयोनोक के प्रश्न का उत्तर देने के लिए और एक अतिरिक्त टिप दें:

मर्ज करने के बाद, आपका गिट क्ली आपको एक संदेश लिखने के लिए प्रेरित करेगा, आम तौर पर एक सामान्य संदेश कुछ ऐसा कहेगा

दूरस्थ-ट्रैकिंग शाखा 'उपयोगकर्ता / उनकी शाखा' को अपनी शाखा में विलय करें

उस संदेश को संपादित करना सुनिश्चित करें और पुल अनुरोध संख्या का संदर्भ शामिल करें। वह है: (पुल अनुरोध संख्या मान 123 है)

दूरस्थ-ट्रैकिंग शाखा 'उपयोगकर्ता / उनकी शाखा' को अपनी शाखा में विलय करें

refs # 123 जो भी हल कर रहा है ...

इसलिए अगली बार जब आप अपने github मुद्दों / पुल-अनुरोध पृष्ठ पर जाएं और उस विशेष पुल अनुरोध की जांच करें, तो आप अपना संदेश लिंक के साथ देखेंगे जहां आपने विलय किया था।

यहाँ एक स्क्रीनशॉट है जो मेरा मतलब है।

यहां छवि विवरण दर्ज करें


6

ऐसा करने के लिए अपने रिपॉजिटरी के होम पेज पर जाएं, शाखाओं पर क्लिक करें, और मास्टर से डिफ़ॉल्ट ब्रांच को किसी अन्य चीज़ में, मेरे मामले में "देव" में बदल दें।

उसके बाद, जब भी कोई पुल अनुरोध बनाता है, तो mergeबटन मास्टर के बजाय "देव" में अनुरोध को स्वचालित रूप से मर्ज कर देगा।

यहां छवि विवरण दर्ज करें


टाइपो ठीक @the टिन मनुष्य मैं के लिए धन्यवाद इसकी सराहना
abbood

4
समायोजन / संपादन के लिए हमें धन्यवाद देने की कोई आवश्यकता नहीं है। यह कुछ ऐसा है जो हम साइट के लिए करते हैं। अच्छे उत्तर लिखते रहें, यही पर्याप्त है।
टिन मैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.