git - केवल नवीनतम प्रतिबद्धता के लिए गिटहब पर एक पुल अनुरोध भेजें




github pull-request (4)

आपको मूल रूप से एक नई शाखा बनाने की आवश्यकता है और cherry-pick उन चीजों को cherry-pick जिन्हें आप इसमें जोड़ना चाहते हैं।

नोट: चेकआउट / चेरी-पिक कमांड से पहले आपको इनकी आवश्यकता हो सकती है

git remote add upstream <git repository>

git remote update

git checkout -b <new-branch-name> upstream/master

git cherry-pick <SHA hash of commit>

git push origin <new-branch-name>

इसके बाद, आप github पर <new-branch-name> शाखा देखेंगे, उस पर स्विच करें और आपके इच्छित परिवर्तनों के साथ पुल अनुरोध सबमिट कर सकते हैं।

मैंने जिथब पर एक परियोजना को फोर्क किया और सफलतापूर्वक अपने स्थानीय मास्टर में बदलाव कर रहा हूं और जिथब पर मूल रूप से दबाव डाल रहा हूं। मैं एक पुल अनुरोध भेजना चाहता हूं, लेकिन केवल अंतिम प्रतिबद्धता शामिल करना चाहता हूं। Github.com पर पुल अनुरोध यूआई अंतिम 9 काम करता है और मुझे नहीं पता कि इसे कैसे फ़िल्टर किया जाए।

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

मैं अवधारणाओं को सही करने की कोशिश कर रहा हूं और मुझे जो कुछ चाहिए उसे करने के लिए सही कमांड लाइनों को समझने की कोशिश कर रहा हूं।


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

सबसे पहले रुचि के सभी कामों के लिए पैच फाइलें बनाएं:

git format-patch -1 <sha>

यदि ब्याज की प्रतिबद्धता आखिरी है तो आप इसके बजाय HEAD उपयोग कर सकते हैं <sha>

अब, आप स्रोत भंडार के रखरखाव को पैच भेज सकते हैं, जो उन्हें लागू कर सकते हैं:

git branch new-branch <master or some older commit where the fork diverged>
git checkout new-branch

git am < <the patch>
...

git checkout master
git merge new-branch

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


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

मैंने लिया:

  • orignal_project
  • forked_project (एसएचए पर मूल परियोजना से बनाया गया: 9685770)
  • my_fork (एसएचए पर फोर्कड प्रोजेक्ट से बनाया गया: 207e29b)
  • मेरे कांटा में एक प्रतिबद्धता (SHA: b67627b) कि मैं मूल परियोजना पर वापस सबमिट करना चाहता था

ऐसा करने के लिए, मैं:

  1. एसएचए से एक नई शाखा बनाई जहां मूल परियोजना कांटा गया था
  2. मूल परियोजना से सभी खींच लिया
  3. चेरी ने उस प्रतिबद्धता को उठाया जिसे मैं पुल अनुरोध के रूप में जमा करना चाहता था
  4. इसे सब कुछ गिटूब तक धक्का दिया

गिट कमांड कुछ ऐसा था:

  1. गिट शाखा मेरी सुविधा-अनुरोध 9685770
  2. गिट चेकआउट मेरा फीचर-अनुरोध
  3. गिट खींचें https://github.com/original_project/original_project.git
  4. गिट चेरी-पिक बी 67627 बी
  5. गिट पुश मूल मेरी सुविधा-अनुरोध

तब मैंने मूल परियोजना के लिए मेरे पुल अनुरोध के लिए शाखा के रूप में अपना फीचर-अनुरोध उठाया।


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

तो मैंने एक नई शाखा की जांच की

git checkout -b isolated-pull

और यहां वह जगह है जहां मेरा समाधान @ केविन हैकन्सन से अलग है , क्योंकि मुझे इस शाखा को इतिहास में उस स्थान पर रीसेट करने की आवश्यकता है, जिसे मैं अलग करना चाहता हूं

git reset --hard [sha-to-diff-by]

और चेरी-उस प्रतिबद्धता को चुनें जिसमें से मैं एक पृथक पुल अनुरोध बनाना चाहता हूं

git cherry-pick [my-isolated-commit-sha]

अंत में इसे रिमोट तक दबाएं

git push origin isolated-pull

और अनुरोध shi shi खींचो।





pull-request