इस उत्तर को संशोधित किया गया है, क्योंकि मेरी समझ, आरेख और निष्कर्ष गलत थे।
git pull
मर्ज का कारण बनता है क्योंकि गिट विलय है। मर्ज के बजाय रिबास का उपयोग करने के लिए अपनी शाखाओं को सेट करके इसे बदला जा सकता है। एक पुल पर मर्ज के बजाय रिबास का उपयोग साझा भंडार को अधिक रैखिक इतिहास प्रदान करता है। दूसरी ओर, मर्ज कमिट शाखा पर समानांतर विकास के प्रयासों को दर्शाता है।
उदाहरण के लिए, दो लोग एक ही शाखा में काम कर रहे हैं। शाखा के रूप में शुरू होता है:
...->C1
पहला व्यक्ति अपना काम पूरा करता है और शाखा को धक्का देता है:
...->C1->C2
दूसरा व्यक्ति अपना काम खत्म करता है और धक्का देना चाहता है, लेकिन इसलिए नहीं कर सकता क्योंकि उन्हें अपडेट करने की जरूरत है। दूसरे व्यक्ति के लिए स्थानीय भंडार ऐसा दिखता है:
...->C1->C3
यदि पुल को विलय करने के लिए सेट किया गया है, तो दूसरा व्यक्ति रिपॉजिटरी दिखेगा।
...->C1->C3->M1
\ /
->C2->
जहां M1 एक मर्ज कमेटी है। यह नया शाखा इतिहास रेपो को धकेल दिया जाएगा। यदि इसके बजाय, स्थानीय रेपो को पुन: प्रदर्शित करने के लिए पुल सेट किया जाता है:
...->C1->C2->C3
कोई मर्ज कमिट नहीं है। इतिहास को और अधिक रैखिक बना दिया गया है।
दोनों विकल्प शाखा के इतिहास को दर्शाते हैं। git आपको यह चुनने की अनुमति देता है कि आप कौन सा इतिहास पसंद करते हैं।
वास्तव में ऐसे स्थान हैं जहां रिबास दूरस्थ शाखाओं के साथ समस्या पैदा कर सकता है। यह उन मामलों में से एक नहीं है। हम रिबेस का उपयोग करना पसंद करते हैं क्योंकि यह पहले से ही जटिल शाखा इतिहास को सरल बनाता है और साथ ही साझा रिपॉजिटरी के सापेक्ष इतिहास का एक संस्करण दिखाता है।
आप ब्रांच सेट कर सकते हैं ।autosetuprebase = हमेशा अपने आप को मास्टर के बजाय रिबेट के रूप में अपनी दूरस्थ शाखाओं को स्थापित करने के लिए।
git config --global branch.autosetuprebase always
यह सेटिंग प्रत्येक दूरस्थ शाखा के लिए स्वचालित रूप से कॉन्फ़िगरेशन सेटिंग बनाने का कारण बनता है:
branch.<branchname>.rebase=true
आप इसे अपनी दूरस्थ शाखाओं के लिए स्वयं सेट कर सकते हैं जो पहले से सेटअप हैं।
git config branch.<branchname>.rebase true
मैं अपने पिछले बयानों पर सवाल उठाने और उनका पीछा करने के लिए @LaurensHolst को धन्यवाद देना चाहूंगा। मैंने निश्चित रूप से इस बारे में अधिक जानकारी प्राप्त की है कि कैसे पुल पुल और मर्ज के साथ काम करता है।
मर्ज के बारे में अधिक जानकारी के लिए आप प्रॉजेक्ट-बुक में एक परियोजना में योगदान पढ़ सकते हैं । निजी छोटे टीम अनुभाग शो करता मर्ज करें।
git log --no-merges