Git Pull बनाम Git Rebase


123

मैं गिट में एक noob हूँ, और git pullबनाम के बीच अंतर जानने की कोशिश कर रहा हूं git rebase। क्या कोई उदाहरण प्रदान कर सकता है कि किस विकल्प का उपयोग किया जाए क्योंकि मुझे लगता है कि दोनों एक ही उद्देश्य से काम करते हैं।


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

1
@ user4943236 1) आप यह भी नहीं जानते हैं कि आपके प्रश्न को किसने अस्वीकार किया है, बिना किसी कारण के लोगों पर आरोप लगाते हुए घूमें नहीं 2) यदि यह मेरा पतन था तो मैं इसे सरलता से नहीं हटाऊंगा क्योंकि यह पढ़ने से उत्तर ढूंढना इतना आसान है प्रलेखन
टिम


क्या इससे आपके सवाल का जवाब मिलता है? git पुल वीएस git fetch बनाम git रिबेस
शिवांगिनी

जवाबों:


130

git pullऔर git rebaseविनिमेय नहीं हैं, लेकिन वे निकटता से जुड़े हुए हैं।

git pullवर्तमान शाखा के नवीनतम परिवर्तनों को दूरस्थ से प्राप्त करता है और उन परिवर्तनों को शाखा की आपकी स्थानीय प्रति पर लागू करता है। आम तौर पर यह विलय द्वारा किया जाता है, अर्थात स्थानीय परिवर्तनों को दूरस्थ परिवर्तनों में मिला दिया जाता है। तो git pullके समान है git fetch & git merge

रिबासिंग विलय का एक विकल्प है। दो शाखाओं को मिलाने वाली एक नई कमेटी बनाने के बजाय, यह एक शाखा के कमिट को दूसरे के ऊपर ले जाती है।

आप मर्ज ( git pull --rebase) के बजाय रिबेट का उपयोग करके खींच सकते हैं । आपके द्वारा किए गए स्थानीय परिवर्तनों को दूरस्थ परिवर्तनों के साथ मर्ज किए जाने के बजाय दूरस्थ परिवर्तनों के शीर्ष पर पुन: किया जाएगा।

एटलसियन का विलय बनाम रिबासिंग पर कुछ उत्कृष्ट दस्तावेज हैं


51

git-pull - एक और रिपॉजिटरी या एक स्थानीय शाखा GIT PULL से प्राप्त और एकीकृत करें

मूल रूप से आप अपने स्थानीय, उदाहरण के लिए दूरस्थ शाखा खींच रहे हैं:

git pull origin master

अपने स्थानीय भंडार में मास्टर शाखा खींचेंगे

git-rebase - फॉरवर्ड-पोर्ट लोकल अपडेटेड अपस्ट्रीम हेड GIT REBASE पर जाती है

यह आपके स्थानीय परिवर्तनों को अन्य उपयोगकर्ताओं द्वारा दूरस्थ रूप से किए गए परिवर्तनों के ऊपर रख रहा है। उदाहरण के लिए:

  • उदाहरण के लिए आपने अपनी स्थानीय शाखा में कुछ बदलाव किए हैं SOME-FEATURE
  • इस बीच आपका मित्र अन्य विशेषताओं पर काम कर रहा था और उसने अपनी शाखा को गुरु में मिला लिया

अब आप उसकी और आपकी परिवर्तन को अपनी स्थानीय शाखा में देखना चाहते हैं। तो फिर आप चेकआउट masterशाखा:

git checkout master

तो आप खींच सकते हैं:

git pull origin master

और फिर आप अपनी शाखा में जाते हैं:

git checkout SOME-FEATURE

और आप इससे अंतिम masterपरिवर्तन प्राप्त करने के लिए और अपनी शाखा को शीर्ष पर रखने के लिए रिबेस कर सकते हैं :

git rebase master

मुझे उम्मीद है कि अब यह आपके लिए थोड़ा और स्पष्ट है।


15
आपको मास्टर की जांच करने की आवश्यकता नहीं है। अपनी शाखा पर रहें और करें: git fetchतब git rebase origin/master
एंटोनी मार्टिन

स्थानीय मास्टर की जाँच करके और फिर मूल मास्टर को खींचने से आपके स्थानीय मास्टर को भी अपडेट किया जाएगा। यह सबसे अच्छा अभ्यास में से एक होना चाहिए
अश्विनी

20

संक्षेप में :

-> गेट मर्ज: यह बस आपके और दूरस्थ परिवर्तनों को मर्ज करेगा, और यह एक और प्रतिबद्ध इतिहास रिकॉर्ड बनाएगा

-> Git Rebase: यह आपके परिवर्तनों को सभी नए दूरस्थ परिवर्तनों से ऊपर रखेगा, और इतिहास को फिर से लिखेगा, इसलिए आपका प्रतिबद्ध इतिहास git मर्ज की तुलना में बहुत अधिक क्लीनर होगा। रीबेस एक विनाशकारी ऑपरेशन है। इसका मतलब है, यदि आप इसे सही तरीके से लागू नहीं करते हैं, तो आप प्रतिबद्ध काम खो सकते हैं और / या अन्य डेवलपर के रिपॉजिटरी की निरंतरता को तोड़ सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.