जटिल मर्ज परिदृश्य

एडवांस्ड Git

Amanda Crawford-Adamo

Software and Data Engineer

फ्लाइट ट्रैवल डेटा पाइपलाइन रिपो

फ्लाइट ट्रैवल डेटा पाइपलाइन रिपो की डायरेक्टरी और फ़ाइलों का ग्राफ. Git वर्किंग डायरेक्टरी में 4 फ़ाइलें: etl.py, load.py, transform.py, और ingest.py. data डायरेक्टरी में flight_data.csv डेटा फ़ोल्डर. साथ ही git फ़ोल्डर भी दिखाया गया है.

एडवांस्ड Git

Git squash मर्जिंग

$$

कार्यप्रणाली

  • टार्गेट ब्रांच {{1}} पर एक नया कमिट बनाता है
  • सोर्स ब्रांच {{2}} के सभी बदलाव जोड़ता है
    • एक पैरेंट वाला नियमित कमिट जोड़ता है (recursive रणनीति से अलग)
  • टार्गेट ब्रांच में जोड़ा जाता है (न कि feature ब्रांच)
    • सोर्स ब्रांच का विस्तृत कमिट इतिहास सुरक्षित नहीं रखता

$$

फायदे

  • साफ और रैखिक इतिहास
  • बड़े फीचर्स के लिए कोड रिव्यू सरल
  • पूरी फीचर को रिवर्ट करना आसान
एडवांस्ड Git

स्क्वैश मर्ज उदाहरण

data-cleanup ब्रांच दूसरा कमिट के बाद main से अलग होती है. main में एक अतिरिक्त कमिट है. data-cleanup में दो अतिरिक्त कमिट हैं.

एडवांस्ड Git

स्क्वैश मर्ज प्रक्रिया

  1. main ब्रांच चेकआउट करें

    $ git checkout main
    
  2. data-cleanup के सभी बदलावों का squash कमिट बनाएँ

    $ git merge --squash data-cleanup
    
  3. squash कमिट को main की हिस्ट्री में कमिट करें

    $ git commit -m "Implement and optimize data cleanup"
    
एडवांस्ड Git

स्क्वैश मर्ज परिणाम

एक ग्राफ जो दो ब्रांच दिखाता है: main और data-cleanup. main में चार कमिट हैं. फीचर ब्रांच main के नवीनतम कमिट के बाद अलग होती है और अपने में एक अतिरिक्त कमिट है. main का नवीनतम कमिट सिंगल-पैरेंट कमिट ऑब्जेक्ट है जिसमें data-cleanup के स्क्वैश किए गए कमिट शामिल हैं.

एडवांस्ड Git

Git octopus मर्ज

$$

कार्यप्रणाली

  • एक साथ तीन या अधिक ब्रांच मर्ज करता है
  • कई पैरेंट्स वाला एक मर्ज कमिट बनाता है
  • तब सर्वोत्तम जब ब्रांचों में कॉन्फ्लिक्ट न हों

$$

फायदे

  • कई स्वतंत्र फीचर्स को साथ में इंटीग्रेट करने में उपयोगी
  • प्रोजेक्ट के अलग-अलग वर्ज़न की कई रिलीज़ ब्रांचों को सिंक्रोनाइज़ करने में उपयोग होता है
एडवांस्ड Git

ऑक्टोपस मर्ज उदाहरण

चार डेवलपमेंट ब्रांचों का चित्रण: main, ingestion, transform, और load. ingestion, transform, और load ब्रांच पहले कमिट के बाद main से अलग होती हैं, और हर एक में एक अतिरिक्त कमिट है. main में भी एक अतिरिक्त कमिट है.

एडवांस्ड Git

ऑक्टोपस मर्ज कमांड्स

Git Octopus Merge कमांड

git merge -s octopus

उदाहरण

$ git merge -s octopus ingest transform load
Trying simple merge with ingest
Trying simple merge with transform
Trying simple merge with load
Merge made by the 'octopus' strategy.
...
एडवांस्ड Git

ऑक्टोपस मर्ज परिणाम

चार डेवलपमेंट ब्रांचों का चित्रण: main, ingestion, transform, और load. ingestion, transform, और load पहले कमिट के बाद main से अलग होते हैं, और हर एक में एक अतिरिक्त कमिट है. main में पाँच कमिट हैं जिनमें अन्य ब्रांचों के कमिट शामिल हैं. अंतिम मर्ज कमिट ऑब्जेक्ट के चार पैरेंट्स हैं: main का पिछला नवीनतम कमिट, और ingest, transform, व load ब्रांच के नवीनतम कमिट.

एडवांस्ड Git

सारांश

Squash मर्ज

  • हिस्ट्री सरल करता है, कई कमिट को एक में जोड़ता है
  • साफ, सरल हिस्ट्री के लिए squash मर्ज उपयोग करें
    git merge --squash <source_branch>
    

Octopus मर्ज

  • ब्रांच स्ट्रक्चर सुरक्षित रखता है
  • एक साथ कई ब्रांच मर्ज करता है
  • कई समानांतर डेवलपमेंट को कुशलता से इंटीग्रेट करता है
    git merge -s octopus <branch 1> <branch 2> <branch 3>
    
एडवांस्ड Git

अभ्यास करते हैं!

एडवांस्ड Git

Preparing Video For Download...