2011-04-06 14 views
33

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

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

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

+3

[संभवतः बिना किसी काम के गीथब पुल अनुरोध] के संभावित डुप्लिकेट [http://stackoverflow.com/questions/5415560/github-pull-request-without-old-commits) – Talljoe

+0

टाल्जो द्वारा दिए गए उत्तर की तरह, या तो मर्ज करें अपस्ट्रीम मास्टर की अपनी शाखा में अपस्ट्रीम मास्टर या अपस्ट्रीम मास्टर के शीर्ष पर अपने मास्टर को रीबेस करें। –

उत्तर

46

एक सहकर्मी से यह जवाब मेरे समस्या तय:

git checkout -b NEW_BRANCH_NAME LAST_COMMIT_NAME_BEFORE_THE_ONE_WANTED 
git cherry-pick COMMIT_NAME_WANTED 
git push origin NEW_BRANCH_NAME 

तो GitHub पर आप नई शाखा आपके द्वारा बनाई गई के लिए एक पुल अनुरोध कर सकते हैं।

अद्यतन

मैंने पूछा और इस सवाल का जवाब जब मैं पहली बार Git के साथ काम शुरू कर दिया। अब जब मैं इसके बारे में और जानूं, तो मैं इस जवाब का विस्तार करना चाहता हूं।

एक कांटा के साथ काम करते समय आप शायद मूल रेपो के संबंध में इसे अद्यतन रखना चाहते हैं। तो इन चरणों का मैं आज का पालन होगा:

git remote add upstream GIT_URL_OF_THE_ORIGINAL_REPO 

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

अब आप नवीनतम परिवर्तन प्राप्त करने की आवश्यकता:

git checkout master //checkout your master branch 
git merge upstream/master //merge changes from the master branch in upstream into the branch you checked out (master) 
git push origin master //if you want to push your updated master to your remote fork 

अब, जवाब देने के लिए: फिर

git fetch upstream 

अगर आप upstream से परिवर्तन आप यह करते हैं चाहते हैं के साथ अपने कांटा अपडेट करना चाहते हैं मूल सवाल, अगर मैं एक नया पीआर जमा करना चाहता हूं तो आज मैं क्या करूँगा,:

git fetch upstream //get the latest changes from the original repo 
git checkout -b my_new_feature upstream/master //create a new branch, starting from the master in the original repo 
git cherry-pick WHATEVER_COMMIT_I_WANT //select the commit I want and add it to this new branch 
git push origin my_new_feature //push a new branch to my fork 

फिर मैं my_new_feature शाखा के लिए एक नए पीआर का अनुरोध करता हूं।

आप फ़ाइल को संशोधित/जोड़कर git cherry-pick WHATEVER_COMMIT_I_WANT को प्रतिस्थापित कर सकते हैं और फिर git add FILENAME, git commit -m "Fixing some stuff" कर सकते हैं।

+0

इससे मेरी मदद की .. – harsh

+0

बहुत बहुत धन्यवाद! मैं बहुत समय से इसकी खोज कर रहा था। –

4

आप संभवतः एक अलग शाखा (काम करने के पहले सेट से पहले शाखाबद्ध) में काम करना चाहते हैं, मानते हैं कि वे पहले काम से संबंधित नहीं हैं। फिर अलग शाखा पुल अनुरोध का लक्ष्य हो सकती है और इसमें केवल आपके दूसरे सेट्स शामिल होंगे।