मेरा पुल अनुरोध विलय कर दिया गया है, आगे क्या करना है?


112

मैंने हाल ही में GitHub की एक परियोजना में भाग लिया। मैंने निम्नलिखित कार्य किया:

मूल रिपॉजिटरी को कांटा, मेरे स्थानीय मशीन पर क्लोन किया, मौजूदा बग को ठीक करने के लिए एक शाखा बनाई, उस शाखा में फिक्स्ड बग, उस शाखा को मेरे रेपो में धकेल दिया, रिपॉजिटरी के लेखक को अपनी फिक्स शाखा को मर्ज करने के लिए एक पुल अनुरोध भेजें। इसकी मुख्य शाखा।

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

मुझे आगे क्या करना चाहिये? क्या मुझे शाखा को हटाना चाहिए? क्या मुझे शाखा का विलय करना चाहिए? और कुछ?


अतिरिक्त जानकारी:

मूल परियोजना की एक एकल शाखा है।

मेरे पास नवीनतम अपडेट प्राप्त करने के लिए एक अपस्ट्रीम सेट है जो मूल रेपो बनाता है। (मैंने इसे इस तरह किया) :

git remote add upstream https://path/to/original/repo.git

और मुझे इस तरह के अपडेट मिलते हैं:

git fetch upstream

12
घी, आप केवल एक ही संघर्षरत नहीं हैं: Youtube वीडियो :)
ऐनी

जवाबों:


65

आगे क्या करना है: नई सुविधाओं में योगदान देना या अपनी स्वयं की समर्पित शाखाओं में अन्य कीड़े को ठीक करना (केवल आपके कांटे पर धकेल दिया जाना)।

मतलब आपका कांटा ठहर जाता है, लेकिन आपके कांटे के भीतर की शाखाएँ आ और जा सकती हैं।

यदि आप आगे योगदान करने की योजना नहीं बना रहे हैं, तो आप कांटा भी निकाल सकते हैं, लेकिन यह 'आपके द्वारा योगदान किए गए रिपॉजिटरी' में संबंधित प्रविष्टि को हटा देगा

यह आसान है:

  • अपनी fixशाखा को हटाएं (वास्तव में, यह अब आपके लिए हटा दिया गया है ) अपने कांटे पर (और अपने स्थानीय क्लोन किए गए रेपो में: " स्थानीय और दूरस्थ रूप से एक गिट शाखा को हटाएं " देखें )
  • git pull upstream master(यदि masterवह शाखा थी जिसमें आपका फिक्स एकीकृत किया गया है: मर्ज एक तेजी से आगे होगा): इस बिंदु पर किसी भी छूट की आवश्यकता नहीं है।
  • अपने अद्यतन किए गए स्थानीय master(अब नवीनतम से upstream master) के शीर्ष पर एक फिक्स शाखा बनाएं ।

हालांकि, भविष्य के किसी भी अनुरोध को जमा करने से पहले एक कदम कभी न भूलें :

fixअपस्ट्रीम डेस्टिनेशन ब्रांच से पहले अपनी करंट ब्रांच ( ) को रिबास करें

( upstreamमूल रेपो होने के नाते आपने देखा: " जीथब में मूल और अपस्ट्रीम के बीच अंतर क्या है " देखें )

मूल रेपो ("अपस्ट्रीम") में कुछ भी सबमिट करने से पहले, आपको यह सुनिश्चित करने की आवश्यकता है कि आपका काम नवीनतम के शीर्ष पर आधारित है, जो मूल रेपो (या पुल-रिक्वेस्ट) के लागू होते ही तेजी से आगे विलय में परिणाम नहीं करेगा। upstreamरेपो पर वापस )।
उदाहरण के लिए, " जीथब में साझा भंडार पर पुल अनुरोधों के प्रबंधन के लिए वर्कफ़्लो "।

दूसरे शब्दों में, upstreamआप सामान को ठीक करने में व्यस्त हो सकते हैं (उस पर नए तरीके से काम किया जा सकता है)। आपको यह सुनिश्चित करने की आवश्यकता है कि ऊपर से उस नवीनतम कार्य के लिए आपके सुधारों को फिर से सुनिश्चित करें कि आपके कमिट अभी भी नवीनतम के अनुरूप हैं upstream


ओपी संतोष कुमार पूछता टिप्पणी में :

मैंने upstreamमास्टर से खींचा और विलय किया है, अब क्या?

यदि आपने अपने हाल के पुल अनुरोध के बाद से कोई नया सुधार नहीं किया है, तो ऊपर देखें ( fixअपने अपडेट के शीर्ष पर एक नई शाखा को हटाएं और पुन: बनाएँ master)।

यदि आपने अपने पुल अनुरोध के बाद से कोई और काम किया है, upstreamतो यदि मैं एक नया पुल अनुरोध करना चाहता हूं , तो मैं इससे विलीन नहीं होऊंगा : मैं पुल और रिबेस करूंगा :

git pull --rebase upstream master

इस तरह, मेरे सभी नए स्थानीय कार्यों को सबसे हाल के upstream masterकॉमेट्स (मेरे स्थानीय रेपो में लाया गया) के शीर्ष पर फिर से दोहराया गया है , यह मानते हुए कि masterलक्ष्य शाखा है जो मेरे भविष्य के पुल अनुरोध को एकीकृत करेगी।

फिर मैं अपने स्थानीय कार्य को ' origin' पर धकेल सकता हूं , जो कि GitHub पर मेरा कांटा है upstream
और GitHub पर मेरे कांटे से, मैं सुरक्षित रूप से एक पुल अनुरोध कर सकता हूं, यह जानकर कि यह केवल नए upstreamमर्ज जोड़ देगा बिना किसी मर्ज रिज़ॉल्यूशन की आवश्यकता के: upstreamरेपो में उन नए कॉमे को मर्ज करने का मतलब होगा एक सरल फास्ट-फॉरवर्ड मर्ज।


एक git pull --rebaseजिनमें से आप अपने rebase करना चाहते हैं शीर्ष पर शाखा निर्दिष्ट किए बिना (अभी चेक आउट) fixशाखा काम नहीं होगा:

वह ( git pull --rebase) कहता है:

You asked to pull from the remote '`upstream`', but did not specify a branch. 

क्या मुझे अंतिम में मास्टर को जोड़ना चाहिए? और यह क्या करेगा?, क्या यह मेरी fixशाखा को हटा देगा ?

हां, आप उस शाखा को निर्दिष्ट कर सकते हैं जो पुल अनुरोध का लक्ष्य होगी, उदाहरण के लिए ' master'।
यह आपकी fixशाखा को नहीं हटाएगा, लेकिन masterआपके रेपो में प्राप्त अपस्ट्रीम के शीर्ष पर इसे फिर से चलाएगा।


क्या आप अपस्ट्रीम हिस्से से रिबेट की व्याख्या कर सकते हैं ?
संतोष कुमार

@SantoshKumar आप अपने कांटा करने के लिए जोर दे रहा है और अपने पुल अनुरोध करने से पहले मूल रेपो (यहाँ नदी के ऊपर के रूप में संदर्भित) के शीर्ष पर अपने स्थानीय प्रतिबद्ध rebase की जरूरत है: देखने stackoverflow.com/questions/9257533/...
VonC

हां, मुझे पता है कि मैं एक बुनियादी सवाल पूछ रहा हूं । मैंने ऊपर से लेकर मास्टर तक खींचा और विलय किया है, अब क्या?
संतोष कुमार

@ सन्तोषकुमार यह एक अच्छा प्रश्न है। मैंने इसका जवाब देने के लिए इसका संपादन किया है। "ओपी संतोष कुमार टिप्पणियों में पूछते हैं:" देखें
VONC

यह कहता है: You asked to pull from the remote 'upstream', but did not specify a branch.क्या मुझे masterअंतिम रूप से अपील करनी चाहिए ? और यह क्या करेगा ?, क्या यह मेरी फिक्स शाखा को हटा देगा ?
संतोष कुमार

18

सबसे पहले, जीथब पर एक परियोजना के लिए आपके पहले योगदान के लिए बधाई।

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

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