फोर्क्ड रेपो से पुल अनुरोध को कैसे अपडेट करें?


592

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

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



7
@PaulDraper मैं असहमत हूं, वह उपयोगकर्ता पहले से ही एक पुल अनुरोध को अद्यतन करने के लिए विभिन्न तरीकों को जानता है और प्रस्तुत करता है, और पूछता है कि कौन सा सबसे अच्छा है। मैं दूसरी तरफ, किसी भी तरीके के बारे में नहीं जानता था और उनके अस्तित्व के बारे में पूछ रहा था। जैसा कि इस प्रश्न की लोकप्रियता से पता चलता है, यह कई अन्य उपयोगकर्ताओं के लिए मामला है।
स्टेवबोट

6
मुझे लगता है कि लोकप्रियता इस तथ्य के कारण है कि (1) यह वास्तव में अच्छा है, सामान्य सवाल है और (2) कुछ उपयोगकर्ता वहां के बजाय यहां घाव करते हैं। यदि इसे मूल रूप से एक डुप्लिकेट के रूप में पहचाना जाता था, तो वे दूसरे प्रश्न को समान पाते थे और उनके प्रश्न का उत्तर देते थे।
पॉल ड्रेपर

जवाबों:


584

आपने इसे सही तरीके से किया है। पुल अनुरोध स्वचालित रूप से अपडेट हो जाएगा। प्रक्रिया है:

  1. पुल अनुरोध खोलें
  2. अपने स्थानीय रेपो में प्रतिक्रिया के आधार पर परिवर्तन करें
  3. अपने कांटे की संबंधित शाखा को पुश करें

पुल अनुरोध स्वचालित रूप से पुल अनुरोध चर्चा के तल पर नए कमिट जोड़ देगा (यानी, यह पहले से ही है, नीचे स्क्रॉल करें ) !


73
अच्छा! मैं हर जगह जाँच कर रहा था लेकिन वास्तविक पुल अनुरोध। इसका जादू, काला जादू, मैं इस पर सवाल नहीं उठाऊंगा।
स्टेवबोट

57
शाखाओं में काम करने का यह एक अच्छा कारण है। यदि, उदाहरण के लिए, आपने हमेशा मास्टर को धक्का दिया, तो आप अनजाने में अपने पिछले पुल अनुरोध में जोड़ सकते हैं।
ब्रायन पैन

3
ऐसा प्रतीत नहीं होता है कि अतीत में भी ऐसा हुआ था। यहां शाखा ( github.com/mhuggins/bootstrap-markdown/commits/ ) के मुकाबले मैंने अपने द्वारा किए गए एक पुल अनुरोध का एक उदाहरण ( github.com/toopay/bootstrap-markdown/pull/167 ) दिया है। जिज्ञासु यह कैसे करना है क्योंकि यह प्रक्रिया बदल गई है।
मैट हगिन्स

1
GitHub वास्तव में आपको बताता है: "ChangeTheWorld.ject पर SolveWorldHunger शाखा को धक्का देकर अधिक कमेंट्स जोड़ें।"
flow2k

1
यहाँ वही - मुझे मुख्य रिपॉजिटरी में फोर्क्ड रेपो से परिवर्तन नहीं दिख रहा है। GitHub बग जैसा दिखता है
andrfas

77

GitHub में एक पुल अनुरोध को अपडेट करना उतना ही आसान है जितना कि मौजूदा शाखा में वांछित परिवर्तन करना (जो पुल अनुरोध के साथ उपयोग किया गया था), लेकिन अक्सर यह एकल प्रतिबद्ध में बदलावों को भी तोड़ना चाहता है:

git checkout yourbranch
git rebase -i origin/master

# Edit command names accordingly
  pick   1fc6c95 My pull request
  squash 6b2481b Hack hack - will be discarded
  squash dd1475d Also discarded

git push -f origin yourbranch

... और अब पुल अनुरोध में केवल एक ही प्रतिबद्धता है।


रिबासिंग के बारे में संबंधित लिंक:


2
रिबास का उल्लेख करने के लिए Upvote। यह संशोधन इतिहास में शोर को काटने में मदद करता है।
स्टीव जूल

+11 (हाँ, मेरा इरादा महत्वपूर्ण छल-कपट का है। git rebase / pick / squash का उपयोग करना बढ़िया काम कर रहा है।
javadba

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

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

35

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


14

मैंने इसे नीचे दिए गए चरणों का उपयोग करके किया है:

  1. git reset --hard <commit key of the pull request>
  2. क्या मैं अपने कोड में बदलाव करना चाहता था
  3. git add
  4. git commit --amend
  5. git push -f origin <name of the remote branch of pull request>

1
बहुत अच्छा, मैं इस दृष्टिकोण को पसंद करता हूं! GitHub भी कोड (और संबंधित टिप्पणियों) के पुराने अनुभागों को छिपाता है (लेकिन रखता है)। यह याद रखना अच्छा है कि यदि पुल अनुरोध में कई कमिट होते हैं और जिसको ठीक करने की आवश्यकता होती है वह शाखा के सिरे पर नहीं होता है, "जीआईटी रीसेट - वॉर्ड" निर्दिष्ट आईडी के बाद शुरू किए गए सभी परिवर्तनों को छोड़ देगा। मेरे पास एक बैकअप था जिसे मैंने मैन्युअल रूप से लागू किया था। बहुत सुविधाजनक नहीं है अगर एक से अधिक अतिरिक्त प्रतिबद्ध हैं ...
नागदेव

3

यदि Windows पर GitHub का उपयोग किया जा रहा है :

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

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

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