गिट पुल 2 कमांड का संयोजन है
- गिट फ़ेच (रिमोट पर नवीनतम सामग्री के साथ आपके स्थानीय रेपो को सिंक करता है)
- गिट मर्ज (दूरस्थ शाखा से परिवर्तनों को विलय करता है, यदि कोई हो, तो आपकी स्थानीय ट्रैकिंग शाखा में)
गिट रिबेस केवल गिट विलय के बराबर बराबर है। यह कुछ भी दूरस्थ रूप से नहीं लाता है। असल में यह उचित विलय नहीं करता है, यह दूसरी शाखा से नए काम के बाद आप जिस शाखा पर खड़े हो रहे हैं उसकी गतिविधियों को दोहराता है।
इसका उद्देश्य मुख्य रूप से आपको क्लीनर इतिहास देने देना है। पिछले इतिहास से पहले कई लोगों द्वारा कई विलय नहीं होते हैं, गिटक में बहुत ही स्पेगेटी जैसी होती है।
सबसे अच्छा ग्राफिकल स्पष्टीकरण पहले 2 ग्राफिक्स यहां । लेकिन मुझे यहां एक उदाहरण के साथ समझाओ।
मेरे पास 2 शाखाएं हैं: मास्टर और माइब्रैंच। जब मेरी ब्रैंच पर खड़ा होता है तो मैं दौड़ सकता हूं
git rebase master
और मैब्रैंच में मेरे हालिया कामों से पहले मुझे मास्टर में कुछ भी नया लगाया जाएगा। यह सही है, क्योंकि अगर अब मैं मास्टर में माइब्रैंच से सामान मर्ज या रीबेज करता हूं, तो हाल ही में किए जाने के बाद मेरे नए कामों को रैखिक रूप से जोड़ा जाता है।
यदि आप "गलत" दिशा में पुन: प्रतिक्रिया करते हैं तो आप जिस समस्या का उल्लेख करते हैं वह होता है। अगर मुझे अभी हालिया मास्टर (नए बदलावों के साथ) मिला है और मास्टर से मैं इस तरह रीबेस करता हूं (मेरी शाखा को सिंक करने से पहले):
git rebase mybranch
अब मैंने जो किया है वह है कि मैंने मास्टर के अतीत में कहीं भी अपने नए बदलाव डाले। काम की मुख्य पंक्ति बदल गई है। और जिस तरह से गिट प्रतिबद्ध आईडी के साथ काम करता है, सभी काम (मास्टर से) जो कि मेरे नए बदलावों पर फिर से खेला गया था, में नए आईडी हैं।
खैर, शब्दों में बस व्याख्या करना थोड़ा मुश्किल है ... उम्मीद है कि यह थोड़ा सा समझ में आता है :-)
वैसे भी, मेरा अपना वर्कफ़्लो यह है:
- 'गिट खींचें' रिमोट से नए बदलाव
- mybranch पर स्विच करें
मेरे प्रतिबद्ध इतिहास में मास्टर के नए बदलाव लाने के लिए - 'गिट रीबेस मास्टर'
- मास्टर पर वापस स्विच करें
- 'गिट मर्जब्रैज मर्ज करें', जो केवल फास्ट-फॉरवर्ड होता है जब मास्टर में सब कुछ माइब्रैंच में भी होता है (इस प्रकार सार्वजनिक शाखा पर प्रतिबद्ध रीडरिंग समस्या से परहेज करता है)
- 'गिट पुश'
एक आखिरी शब्द मतभेद छोटे होते हैं (उदाहरण के लिए अलग-अलग फाइलों या कम से कम अलग-अलग लाइनों पर काम करने वाले लोग) जब मैं दृढ़ता से उपयोग करने की सलाह देता हूं। इसमें गोचाचा है कि मैंने वहां बस व्याख्या करने की कोशिश की, लेकिन यह एक बहुत साफ इतिहास बनाता है।
जैसे ही महत्वपूर्ण संघर्ष हो सकते हैं (उदाहरण के लिए एक सहकर्मी ने फाइलों के समूह में कुछ नाम बदल दिया है), मैं दृढ़ता से विलय की अनुशंसा करता हूं। इस मामले में, आप संघर्ष को हल करने के लिए कहा जाएगा और फिर संकल्प प्रतिबद्ध करेंगे। प्लस तरफ, विवाद होने पर हल करने के लिए एक मर्ज बहुत आसान है। नीचे की तरफ यह है कि यदि आपका बहुत से लोग विलय करते हैं तो आपका इतिहास पालन करना मुश्किल हो सकता है :-)
सौभाग्य!