पुल अनुरोध को अद्यतन करने के लिए
पुल अनुरोध (बिंदु # 1) को अपडेट करने के लिए, केवल एक चीज जो आपको करने की आवश्यकता है, उसी शाखा को चेकआउट करना है जो पुल अनुरोध से है और इसे फिर से धक्का दें:
cd /my/fork
git checkout master
...
git commit -va -m "Correcting for PR comments"
git push
वैकल्पिक - इतिहास की सफाई
आपको अपने कमिट्स को एक साथ स्क्वैश करने के लिए कहा जा सकता है ताकि रिपॉजिटरी का इतिहास साफ हो, या अपने आप से बिचौलिया कमेंट्स को हटाना चाहते हैं जो आपके पुल अनुरोध (बिंदु # 2) में "संदेश" से विचलित करते हैं। उदाहरण के लिए यदि आपका प्रतिबद्ध इतिहास इस तरह दिखता है:
$ git remote add parent git@github.com:other-user/project.git
$ git fetch parent
$ git log --oneline parent/master..master
e4e32b8 add test case as per PR comments
eccaa56 code standard fixes as per PR comments
fb30112 correct typos and fatal error
58ae094 fixing problem
यह चीजों को एक साथ निचोड़ने के लिए एक अच्छा विचार है ताकि वे एक ही प्रतिबद्ध के रूप में दिखाई दें:
$ git rebase -i parent/master
यह आपको अपने पुल अनुरोध के इतिहास को फिर से लिखने का विकल्प चुनने के लिए प्रेरित करेगा, निम्नलिखित आपके संपादक में होगा:
pick 58ae094 fixing actual problem
pick fb30112 correct typos
pick eccaa56 code standard fixes
pick e4e32b8 add test case as per PR comments
किसी भी कमिटमेंट के लिए आप पिछली कमिटमेंट का हिस्सा बनना चाहते हैं - स्क्वैश में बदलाव करें:
pick 58ae094 fixing actual problem
squash fb30112 correct typos
squash eccaa56 code standard fixes
squash e4e32b8 add test case as per PR comments
और अपने संपादक को बंद करें। Git तब इतिहास को फिर से लिखेगा और आपको एक संयुक्त प्रतिबद्ध के लिए एक प्रतिबद्ध संदेश प्रदान करने के लिए संकेत देगा। तदनुसार संशोधन करें और आपका प्रतिबद्ध इतिहास अब संक्षिप्त होगा:
$ git log --oneline parent/master..master
9de3202 fixing actual problem
पुश करने के लिए अपने कांटा:
$ git push -f
Counting objects: 19, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (11/11), 978 bytes, done.
Total 11 (delta 9), reused 7 (delta 6)
To git@github.com:me/my-fork.git
f1238d0..9de3202 HEAD -> master
और आपके पुल अनुरोध में एक ही प्रतिबद्ध होगा, जिसमें पहले से कई बदलावों को शामिल किया गया था।
पब्लिक रिपोज पर इतिहास बदलना बुरी बात है
इतिहास को फिर से लिखना और git push -f
उस शाखा का उपयोग करना, जो, संभवतः, किसी और ने पहले ही क्लोन कर लिया है, एक बुरी बात है - यह रिपॉजिटरी के इतिहास का कारण बनता है और चेकआउट करने के लिए।
हालाँकि, अपने कांटे के इतिहास को संशोधित करने के लिए आप जिस रिपॉजिटरी में एकीकृत होने का प्रस्ताव कर रहे हैं, उसे ठीक करना - एक अच्छी बात है। जैसे कि आपके पुल अनुरोधों में से "शोर" को दूर करने के लिए कोई आरक्षण नहीं है।
शाखाओं पर एक नोट
ऊपर में मैं master
आपके फोर्क की शाखा से आने के रूप में पुल अनुरोध दिखाता हूं , इसमें जरूरी कुछ भी गलत नहीं है, लेकिन यह कुछ सीमाएं बनाता है जैसे कि, यदि यह आपकी मानक तकनीक है, तो केवल एक पीआर प्रति भंडार खोलने में सक्षम है । हालांकि यह एक बेहतर विचार है कि आप जिस प्रत्येक व्यक्ति को प्रस्ताव देना चाहते हैं उसके लिए एक शाखा बनाएं:
$ git branch feature/new-widgets
$ git checkout feature/new-widgets
...
Hack hack hack
...
$ git push
# Now create PR from feature/new-widgets
master
एक शाखा भी है, इसलिए तकनीकी रूप से यह कोई फर्क नहीं पड़ता है :)