क्या बेहतर है कि आप पुल अनुरोध शुरू करें या मास्टर पर स्थानीय मर्ज करें।


12

मैं पिछले कुछ समय से GitHub का उपयोग कर रहा हूं और मैं आमतौर पर अपनी फीचर-शाखाओं को आगे बढ़ाता हूं और फिर एक Pull Request शुरू करता हूं जिसे मैंने खुद मर्ज किया था। मैंने पाया कि इससे मुझे उन शाखाओं पर नज़र रखने में मदद मिली जहाँ मैंने शाखाओं को मिलाया था।

लेकिन हाल ही में मैं अधिक से अधिक पढ़ रहा हूं कि कैसे Git काम करता है और मुझे एहसास हुआ कि मैं मर्ज-कमिट्स का उपयोग कर सकता हूं जब मैं शाखाओं को मिलाता हूं।

इसलिए, मुझे एक सुविधा-शाखा को मास्टर में विलय करते समय क्या करना चाहिए:
मास्टर पर एक मर्ज-कमिट करें और फिर इसे ऊपर की ओर धकेलें या स्थानीय शाखा को पुश करें और एक पुल अनुरोध शुरू करें?

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


2
क्या आपको लगता है कि उन उत्तरों से कमी है?
रबरडैक

पहले वाला इस बारे में इस अर्थ से बात करता है कि पुल अनुरोधों की समीक्षा की जानी चाहिए। दूसरा एक वर्कफ़्लो प्रदान करता है। तीसरा भी संबंधित नहीं है।
अशर हसन

1
मैं इसे बेस्ट प्रैक्टिसेस से देख रहा हूं या कैसे एक अच्छे इतिहास को बनाए रख सकता हूं ।
अशर हसन

1
जब मैं एक पीआर का विलय करता हूं, तो मैं स्थानीय स्तर पर शाखा को विलय करके ऐसा करता हूं। यह मुझे यह सुनिश्चित करने की अनुमति देता है कि मर्ज सफाई से लागू होता है, और परिणाम प्रकाशित करने से पहले परीक्षण फिर से चलाने के लिए। GitHub का पुल अनुरोध केवल इस वर्कफ़्लो का एक औपचारिककरण है, Git में PRs की अवधारणा नहीं है।
आमोन

2
जब एक पीआर विलय हो जाता है तो यह मास्टर पर एक मर्ज कमिटमेंट पैदा करता है, इसलिए मुझे नहीं लगता कि इससे गिट इतिहास पर कोई फर्क पड़ता है। इस प्रकार मुझे नहीं लगता कि कमांड लाइन और जीथब यूआई के बीच आपकी व्यक्तिगत पसंद से एक या दूसरे का उपयोग करने का कोई कारण है।
Ixrec

जवाबों:


15

गिट-मर्ज मैकेनिज्म: मास्टर पर
प्रयोग git merge featureकरते समय, शाखा featureको मर्ज इतिहास में (यदि शाखा तेजी से अग्रेषित नहीं किया जा सकता है) का masterउत्पादन करता है merge-commit। किसी merge-commitबनने के लिए मजबूर करने के लिए, --no-ffविकल्प का उपयोग करें merge

मर्ज पुल अनुरोध तंत्र:
जब हम गिटहब पर एक पुल अनुरोध शुरू करते हैं, तो यह एक ऐसा स्थान बनाता है GitHub Issueजहां लोग विलय से पहले पीआर में काम कर सकते हैं और चर्चा कर सकते हैं। जब एक PR को GitHub पर मर्ज किया जाता है तो यह ठीक उसी तरह होता है जैसे कि git merge feature

मुझे क्या करना चाहिए?
इसलिए, जहां तक ​​इतिहास का संबंध है, दोनों के बीच कोई अंतर नहीं है।
और जहाँ तक योगदान होगा, आपके योगदानकर्ताओं को दो स्थितियों के लिए कुछ अलग नहीं करना पड़ेगा। वे एक ही हैं (छोटी सी छोटी चैट)।

सर्वोत्तम प्रथाएँ:
और मैं एक सर्वोत्तम प्रथाएं खोजने में असमर्थ था, लेकिन तर्क यह कहता है कि पीआरएस बहुत मददगार नहीं हैं यदि रिपॉजिटरी में केवल एक ही व्यक्ति है।

@lxrec और @amon ने मुझे इस निष्कर्ष पर पहुंचने में मदद की।


5
युक्ति: git mergeयदि यह "तेज़ फ़ॉरवर्ड" कर सकता है तो मर्ज कमिट रिकॉर्ड नहीं कर सकता है। मर्ज कमिट करने के लिए, आप --no-ffविकल्प जोड़ सकते हैं ।
आमोन

मैं githuib.com पर करने के बजाय लोकल पर git-merge करना पसंद करता हूं, अगर मुझे github.com पर ऐसा कुछ भी करना होगा, तो मैं सीधे मास्टर ब्रांच पर नहीं करना पसंद करूंगा, मैं नॉन-मास्टर ब्रांच लेना चाहूंगा जो पहले हो सकता है उत्पादन के लिए उपलब्ध कराने से पहले स्टेजिंग मोड पर सेट करें।
३:३० बजे Ciasto piekarz

5

जैसा कि अशर ने कहा, तकनीकी रूप से और इतिहास के लिहाज से कोई अंतर नहीं है। एक छोटी टीम के साथ परियोजनाओं के लिए मैं एक पीआर बनाने के अतिरिक्त कदम के बजाय सीधे विलय करना पसंद करता हूं। हालाँकि, जब किसी फीचर की समीक्षा / प्रतिक्रिया की आवश्यकता होती है या जब यह एक WIP होता है और एक से अधिक व्यक्ति इस पर काम करेंगे, तो मैं एक पीआर खोलने के लिए और पीआर के विवरण में कार्यों की एक सूची जोड़ देता हूं।

ध्यान दें कि git mergeयदि मास्टर में कोई परिवर्तन नहीं हैं, तो फास्ट-फॉरवर्ड का उपयोग कर सकते हैं, इसलिए आप उपयोग करना चाह सकते हैं git merge --no-ff। मैं नहीं करने के लिए करते हैं।

इसलिए सारांश में, चर्चा की आवश्यकता होने पर ही पीआर का उपयोग करें। अन्यथा बस सीधे विलय।


1
यह भी उल्लेखनीय है कि एक पुल अनुरोध पर चर्चा और प्रतिक्रिया स्वचालित स्रोतों के साथ-साथ टीम के सदस्यों से भी आ सकती है। यदि आपके पास CI सर्वर सेट है, तो यह बिल्ड और टेस्ट परिणाम दे सकता है ताकि आप कभी भी कुछ ऐसा मर्ज न करें जो मास्टर पर बिल्ड को तोड़ता है।
एरिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.