गितुब पर एक हल अनुरोध प्राप्त करें जहां मूल रूप से एक प्रतिबद्ध बनाया गया था


171

एक रेपो में किए गए परिवर्तनों के परिवर्तन या सेट के आसपास बड़ी सोच को समझने के लिए पुल अनुरोध महान हैं। पठन अनुरोध पढ़ना, स्रोत को छोटे परमाणु परिवर्तनों के बजाय एक परियोजना को जल्दी से "ग्रॉक" करने का एक शानदार तरीका है, आपको तार्किक परिवर्तनों के बड़े समूह मिलते हैं। अपने कोड में संबंधित "श्लोक" में लाइनों को व्यवस्थित करने के लिए इसे पढ़ने में आसान बनाने के लिए अनुरूप।

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


1
+1 यह तब भी उपयोगी है जब आपने किसी प्रोजेक्ट को कांट-छांट किया हो और आपके पास एक पुरानी वर्क ब्रांच हो, जिसके आसपास आपको कोई पीआर याद नहीं है।
स्टीव क्ले

जवाबों:


225

आप बस गिटब पर जा सकते हैं और एसएचए को खोज बार में दर्ज कर सकते हैं, सुनिश्चित करें कि आप बाईं ओर "मुद्दे" लिंक का चयन करें।

13 जुलाई 2017 को अद्यतन

Github UI के माध्यम से अब ऐसा करने का एक बहुत आसान तरीका है। यदि आप UI में एक शाखा में कमिट की सूची में एक कमिट देख रहे हैं, तो कमिट के लिंक पर क्लिक करें। यदि उस प्रतिबद्ध के लिए एक पीआर है और इसे सीधे शाखा में नहीं जोड़ा गया है, तो पीआर नंबर को सूचीबद्ध करने वाली पीआर की एक लिंक और जिस शाखा में गया है वह सीधे पृष्ठ के शीर्ष पर प्रतिबद्ध संदेश के तहत होगा। यहां छवि विवरण दर्ज करें


कमेटी के लिंक पर क्लिक करके PR खोजने का उदाहरण

यदि आपके पास प्रतिबद्ध SHA और कुछ नहीं है और इसके लिए खुदाई करने के लिए नहीं जाना चाहते हैं, तो बस /commit/[commit SHA]रेपो url में जोड़ें , और अगर यह मौजूद है, तो आप पीआर लिंक के साथ प्रतिबद्ध पृष्ठ देखेंगे। उदाहरण के लिए, यदि SHA 52797a7a3b087231e4e391e11ea861569205aaf4 है और रेपो https://github.com/glimmerjs/glimmer-vm है , तो https://github.com/glimmerjs/glimmer-vm/comit/52779797977 पर जाएं।


मैं इस तरह के एक छोटे SHA के साथ काम करने के लिए नहीं मिल सकता है e4077951, क्या यह अभी भी आपके लिए काम करता है?
मैट सैंडर्स

@RustyToms यह काम करता है, लेकिन जब मैंने आपके जैसे एक प्रतिबद्ध हैश की खोज की, [ github.com/wso2/carbon-kernel/… । इस तरह के परिदृश्य में हमें संबंधित अनुरोध को मर्ज करने वाले पुल अनुरोध के रूप में क्या चुनना चाहिए
कसुन सियामबलपिटिया

@RustyToms हम इसे एपीआई के माध्यम से कैसे प्राप्त कर सकते हैं
कसुन सियामबलपिटिया


1
यदि किसी पीआर का कोई संदर्भ नहीं है, तो क्या मैं निष्कर्ष निकाल सकता हूं कि कोई पीआर नहीं था? यही है, कमेटी सीधे शाखा (आमतौर पर master) पर बनाई गई थी ?
एरिक

53
git config --add remote.origin.fetch +refs/pull/*/head:refs/remotes/origin/pull/*
git fetch origin
git describe --all  --contains <COMMIT>

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

यह वास्तविक शाखाओं के साथ पुल अनुरोधों के बारे में जानकारी प्राप्त करने का कारण बनेगा। वे दूरस्थ-ट्रैकिंग शाखाओं की तरह दिखाई देंगे origin/pull/123। एक बार ऐसा हो जाने के बाद आप पहली शाखा को दिखाने के लिए विकल्पों और विकल्पों के git describeसाथ उपयोग कर सकते हैं , जिसका संदर्भ दिया गया है।--all--contains

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


मैं अस्वीकृत PRs में सभी कमेंट्स को डाउनलोड करने में यह परिणाम मानता हूं। वहाँ कोई रास्ता नहीं है पाने के लिए pull/*/headबिना बूँद के commits की सूची है ? इसके बाद एक "सफाई" कैसे होगी (उत्पत्ति को फिर से कॉन्फ़िगर करें)?
स्टीव क्ले

1
यह जानना बहुत अच्छा है; मुझे नहीं पता था कि GitHub ने इन्हें वास्तविक Git ऑब्जेक्ट्स के रूप में ट्रैक किया था लेकिन यह सही समझ में आता है। BTW क्या आप अपने विन्यास कमांड पर "मूल" के बजाय "अपस्ट्रीम" का उपयोग करना चाहते थे?
तोबियास जे

1
@TobyJ का उपयोग upstreamवास्तव में एक गलती थी। मैंने कॉपी किया था कि उस रिपॉजिटरी से जिसमें उस रिमोट का नाम था upstreamऔर रिमोट originके नाम के रूप में अधिक सामान्य का उपयोग करने के लिए इसे बदलते समय उस घटना को याद किया गया था । I`ve ने उसे ठीक करने के लिए उत्तर संपादित किया।
क्यूएक्स ३०'१४

धन्यवाद! लेकिन यह इतना जटिल है। काश, वेब UI पर युक्त पुल अनुरोध के लिए एक लिंक होता।
डैनियल डारबोस

fwiw आप refs/remotes/origin/pr/*इसके बजाय का उपयोग करने की कोशिश कर सकते हैंrefs/remotes/origin/pull/*
elaichi

21

13 अक्टूबर 2014 के बाद से, यह सीधा होना चाहिए:

उदाहरण के लिए:

आप फ़ाइल के लिए देख सकते हैं hakimel/reveal.js/plugin/markdown/markdown.js, मेरा योगदान अब पीआर # 734 के संदर्भ में आता है ।

कंट्रीब से पीआर

यह लिंकिंग से मर्ज किए गए पुल अनुरोधों से आता है :

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

इसमें पीआर संदर्भ के साथ प्रतिबद्ध!

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

हमेशा की तरह, यदि आप प्रतिबद्ध SHA जानते हैं, तो आप प्रतिबद्ध पृष्ठ को छोड़ सकते हैं और सीधे पुल अनुरोध के लिए खोज कर सकते हैं


जब मैंने आपके जैसे एक प्रतिबद्ध हैश की खोज की, तो [ github.com/wso2/carbon-kernel/…। इसने मुझे दो पुल अनुरोध प्रदान किए , दोनों को एक ही कमिट में मास्टर में विलय कर दिया। इस तरह के परिदृश्य में हमें संबंधित अनुरोध को मर्ज करने वाले पुल अनुरोध के रूप में क्या चुनना चाहिए
कसुन सियामबलपिटिया

@KasunSiyambalapitiya यकीन नहीं: आप उसके लिए एक नया सवाल पूछ सकते हैं। मैं सबसे हाल में जाऊंगा।
वॉनक

2
क्या हम इसे APIस्तर में प्राप्त कर सकते हैं ?
कसुन सियामबलपिटिया

@KasunSiyambalapitiya अच्छा सवाल। मुझे नहीं पता। मैं में है कि संदर्भ नहीं दिख रहा है developer.github.com/v3/repos/commits/#get-a-single-commit
VonC

@ स्वप्रेरणा। मुझे पीआर की सूची दिखाई देती है, लेकिन उनके SHA1 ने उनके एकीकरण को चिह्नित नहीं किया है।
वॉन


3

मुझे भी यही समस्या थी और pr_for_sha bash हेल्पर लिखी, यहाँ दस्तावेज:

http://joey.aghion.com/find-the-github-pull-request-for-a-commit/

इसे कॉल करें pr_for_sha <COMMIT>और यह ब्राउजर में संबंधित गिथब पुल अनुरोध पेज को खोलेगा।


2
यह समाधान मानता है कि कमिट के बाद निकटतम मर्ज वह मर्ज होता है जिसमें कमिट होता है, जो हमेशा जरूरी नहीं होता है।
जेसन डेनी

@JasonDenney आप निम्नलिखित शाखा में या समय में मतलब है?
लीज़्यूस

हम्म, यह कुछ समय पहले था, लेकिन मुझे लगता है कि मैं समय का मतलब था। सोमवार को कहें कि आप शाखा ए में एक "एक्स" बनाते हैं, मंगलवार को आप शाखा बी में एक कमेटी बनाते हैं और शाखा बी को मास्टर करने के लिए, बुधवार को आप शाखा ए को मास्टर में विलय कर देते हैं। यदि आप इस स्क्रिप्ट का उपयोग मास्टर शाखा पर खोज करने के लिए करते हैं, जिसके लिए PR "X" करता है, तो मुझे पूरा यकीन है कि यह गलत तरीके से आपको शाखा B. खुद के लिए डबल चेक बता देगा।
जेसन डेनी

git logकाम करने की आज्ञा नहीं मिल सकती । git log --merges --ancestry-path --oneline 66100ab0..master- fatal: ambiguous argument '66100ab0..master': unknown revision or path not in the working tree.-git version 2.25.0
जियानफ्रेंको पी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.