मर्ज प्रकार समझना

एडवांस्ड Git

Amanda Crawford-Adamo

Software and Data Engineer

मैं अमांडा हूँ

अमांडा की तस्वीर

एडवांस्ड Git

git merge क्या है?

Git merge कमांड:

git merge
  • एक ब्रांच के बदलाव दूसरी ब्रांच में जोड़ता है
  • दो ब्रांचों का common base ढूँढता है
  • अलग-अलग merge रणनीतियाँ इस्तेमाल करें

सड़क जहाँ दो रास्ते मिलते हैं और दो कारें एक ही सड़क पर आकर मिलती हैं

एडवांस्ड Git

Fast-forward merge

Fast-forward merge क्या है?

  • सरल, सीधी history रखें
  • छोटे, सरल बदलाव वाली short-lived ब्रांचों के लिए बढ़िया

$$

कब न करें

  • ब्रांच history सुरक्षित रखनी हो
  • long-lived ब्रांचों में complex फीचर डेवलपमेंट
  • ब्रांचों में merge conflict हो – fast-forward तुरंत फेल होता है!
एडवांस्ड Git

Fast-forward merge (पहले)

एक ग्राफ जो दो ब्रांच दिखाता है: main और feature ब्रांच. Main में दो commits हैं. Feature ब्रांच, main के नवीनतम commit के बाद अलग होती है और अपने ब्रांच में एक अतिरिक्त commit है.

एडवांस्ड Git

Fast-forward merge सिंटैक्स

Git merge fast-forward डिफ़ॉल्ट

git checkout main
git merge feature_branch

Git merge fast-forward फ़ोर्स करें

git merge <branch> --ff-only

उदाहरण

git checkout main
git merge feature_branch --ff-only
एडवांस्ड Git

Fast-forward merge (बाद में)

एक ग्राफ जो दो ब्रांच दिखाता है: main और feature ब्रांच. Main में तीन commits हैं. Feature ब्रांच, main के दूसरे commit के बाद अलग होती है और अपने ब्रांच में एक अतिरिक्त commit है. Main का तीसरा commit, feature ब्रांच के नवीनतम commit की कॉपी है.

एडवांस्ड Git

Recursive merge

Recursive merge क्या है?

  • दो parents वाला एक merge commit बनाता है
  • पूरे प्रोजेक्ट की history सुरक्षित रखता है
  • long-lived ब्रांचों के लिए आदर्श
  • branching संरचना बनाए रखें

$$

कब न करें

  • जब simple और linear history रखनी हो
  • त्वरित और छोटे बदलाव
एडवांस्ड Git

Recursive merge (पहले)

एक ग्राफ जो दो ब्रांच दिखाता है: main और feature ब्रांच. Main में तीन commits हैं. Feature ब्रांच, main के पहले commit के बाद अलग होती है और अपने ब्रांच में दो अतिरिक्त commits हैं.

एडवांस्ड Git

Recursive merge सिंटैक्स

Recursive merge कमांड:

git merge --no-ff <branch>

उदाहरण

$ git checkout main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

$ git merge --no-ff feature_branch
Merge made by the 'recursive' strategy.
...
एडवांस्ड Git

Recursive merge (बाद में)

एक ग्राफ जो दो ब्रांच दिखाता है: main और feature ब्रांच. Main में छह commits हैं. Feature ब्रांच, main के नवीनतम commit के बाद अलग होती है और अपने ब्रांच में दो अतिरिक्त commits हैं. Main ब्रांच के छह commits, main और feature commits के इंटरलीव का परिणाम हैं. Main का नवीनतम commit एक merge commit ऑब्जेक्ट है जिसके दो parents हैं: feature ब्रांच का नवीनतम commit और main का पिछला नवीनतम commit.

एडवांस्ड Git

सारांश

  • Fast-forward merges history को सरल और linear रखते हैं
  • Recursive merges ऐतिहासिक संदर्भ सुरक्षित रखते हैं
  • Complex डेवलपमेंट के लिए recursive merges बेहतर हैं

Fast-forward merge कमांड्स

git merge <branch_name> # default command
git merge --ff-only <branch_name> # force fast forward merge

Recursive merge कमांड

git merge --no-ff <branch_name>
एडवांस्ड Git

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

एडवांस्ड Git

Preparing Video For Download...