दिलचस्प पोस्ट
पर्ल में मेरे और स्थानीय में क्या अंतर है? स्ट्रैक्ट्स के 2 डी सरणी को पास करना एंड्रॉइड: कुछ गतिविधियों पर एक्शनबार को छिपाने के लिए मेरी C # gzip Fiddler या PHP की तुलना में एक बड़ी फ़ाइल क्यों बनाती है? उपयोगकर्ता नाम चर के साथ यूआरएल बदलने के लिए मॉड पुनर्लेखन का उपयोग करना कैसे RecyclerView में आइटम के बीच डिवाइडर और रिक्त स्थान जोड़ने के लिए? आईपैड सफारी मोबाइल एचटीएम 5 वीडियो तत्वों के लिए जेड इंडेक्सिंग स्थिति को नजरअंदाज करते हैं पेजरटाइलस्ट्रिप और पेजरटैबस्ट्रिप में रिक्त शीर्षक के आसपास हम कैसे काम कर सकते हैं? रेज़र: घोषणात्मक HTML सहायकों बाल तत्व की अस्पष्टता को रीसेट करना – मेपल ब्राउज़र (सैमसंग टीवी ऐप) कैसे एक कैनवास के अंदर एक UserControl खींचें कैनवास तत्व में मैं एक सरल onClick ईवेंट हैंडलर कैसे जोड़ूं? Android में नाम से ड्रॉएबल संसाधनों का उपयोग कैसे करें जावा में एक तारीख को एन घंटे जोड़ना? संभावित इवेंट ईमेटर मेमोरी रिसाव का पता चला

कोड समीक्षा के बाद पुल अनुरोध को अपडेट करने के लिए पसंदीदा गिथूब वर्कफ़्लो

मैंने गिटब पर एक ओपन सोर्स प्रोजेक्ट को बदल दिया है, और मुख्य टीम के सदस्यों में से एक से कोड समीक्षा की गई टिप्पणियां प्राप्त की हैं।

मैं कोड को समीक्षा टिप्पणियों को ध्यान में रखकर अपडेट करना चाहता हूं और इसे पुनः सबमिट करना चाहता हूं। ऐसा करने के लिए सबसे अच्छा कार्यप्रवाह क्या है? Git / github के मेरे सीमित ज्ञान से, मैं निम्नलिखित में से कोई भी कार्य कर सकता हूं:

  1. कोड को एक नया कमिट के रूप में अपडेट करें, और मेरे पुल अनुरोध के लिए प्रारंभिक और अपडेट किए गए दोनों को जोड़ दें

  2. किसी तरह (??) मेरे रिपॉजिटरी से पुरानी प्रतिबद्धता को वापस रोलबैक करते हैं, और एक नया कमेंट बनाते हैं जिसमें सब कुछ शामिल है, फिर उसके लिए पुल का अनुरोध बढ़ाएं?

  3. git commit में एक संशोधन सुविधा है, लेकिन मैंने सुना है कि आप अपने स्थानीय भंडार के बाहर प्रतिबद्धता धक्का जाने के बाद इसका उपयोग नहीं करना चाहिए? इस मामले में मैंने अपने स्थानीय पीसी पर बदलाव किया है और परियोजना की मेरी गिथूब शाखा को धक्का दिया है। क्या इसे 'सुधार' का उपयोग करना ठीक होगा?

  4. कुछ और?

ऐसा लगता है कि विकल्प 2/3 अच्छा होगा, क्योंकि ओपन सोर्स परियोजना के पास केवल एक ही इतिहास होगा जो सभी को लागू करेगा, लेकिन मुझे यकीन नहीं है कि यह कैसे करना है।

नोट: मुझे नहीं पता कि यह जवाब को प्रभावित करता है या नहीं, लेकिन मैंने अलग शाखा में परिवर्तन नहीं किया, मैंने मास्टर के शीर्ष पर एक प्रतिबद्धता की है

Solutions Collecting From Web of "कोड समीक्षा के बाद पुल अनुरोध को अपडेट करने के लिए पसंदीदा गिथूब वर्कफ़्लो"

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

# 2 और # 3 अनावश्यक हैं यदि लोग केवल अपनी शाखा को (जहां अतिरिक्त git log --first-parent नहीं) में git log --first-parent , तो वे git log --first-parent में मर्ज कमिट को देखने के लिए केवल git log --first-parent लिए git log --first-parent उपयोग कर सकते हैं।

पुल अनुरोध को अपडेट करने के लिए

पुल अनुरोध (बिंदु # 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 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 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 

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

 git push origin name-of-pull-request-branch 

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

कुछ लोग यह पसंद करते हैं कि आप इस शाखाओं को अपने गिथूब यूजरआइड के साथ नामांकित करते हैं। इस तरह वे आसानी से इसे बाहर की जाँच करने के लिए स्थानीय रूप से इसे बाहर की जाँच कर सकते हैं, जैसे लाभ के साथ

  • शाखा नाम टक्कर के कम भय
  • यह याद रखना आसान है कि यह क्या है

मैं आमतौर पर मेरा पुल अनुरोध शाखाओं को कुछ नाम देता हूं

 claybridges-do-the-things