← Back to Git Course | Chapter 3: Branching | Lesson 5 of 9

Git merge Command

एक merge एक group story के दो versions को एक में combine करने जैसा है। जब किसी और ने main story नहीं बदली, Git बिना किसी extra fuss के इसे बस आगे move कर देता है।
Syntax
bash
git checkout target_branch
git merge source_branch
git merge --squash source_branch

Fast-Forward Merges

एक fast-forward merge तब होता है जब आपकी feature branch इससे split off होने के बाद target branch move नहीं हुई -- Git को बिल्कुल merge commit की ज़रूरत नहीं, यह बस branch pointer को नई commits शामिल करने के लिए आगे slide कर देता है।

उदाहरण: Fast-Forward Merges

bash
git checkout main
git merge feature-x

Three-Way Merges

जब diverge होने के बाद दोनों branches में अपनी-अपनी अलग commits आ गई हों, Git बस fast-forward नहीं कर सकता -- यह एक three-way merge perform करता है, दोनों histories को combine करके दो parents वाली एक नई merge commit बनाते हुए।

उदाहरण: Three-Way Merges

bash
git checkout main
git merge feature-y

Squash Merges

एक squash merge (git merge --squash) source branch की हर commit लेकर उन्हें target branch पर एक single नई commit में flatten कर देता है, एक cleaner, simpler main-branch log के लिए detailed history trade करते हुए।

उदाहरण: Squash Merges

bash
git checkout main
git merge --squash feature-z
git commit -m "Add feature z"

Merge Conflicts Handle करना

जब same file की same lines दोनों branches पर अलग तरह से बदली गई हों, Git automatically यह decide नहीं कर सकता कि कौन सा version रखना है -- यह merge pause कर देता है और आपके हाथ से resolve करने के लिए file में conflicting sections mark कर देता है।

उदाहरण: Handling Merge Conflicts

bash
git merge feature-x
# CONFLICT (content): Merge conflict in file.txt
git add file.txt
git commit

Merged Branches Verify करना

git branch --merged उन branches list करता है जिनकी commits पहले से आपकी current branch में पूरी तरह शामिल हैं, और --no-merged उल्टा दिखाता है -- दोनों उन stale feature branches ढूँढने के लिए उपयोगी हैं जिन्हें delete करना safe है।

उदाहरण: Verifying Merged Branches

bash
git branch --merged
git branch --no-merged
Related Topics
{# common_mistakes/chapter_summary/browser_support: on Hindi pages the view already swaps in the hi_ translation fields (or blanks these out if untranslated), so this renders correctly for both languages without a lang_code check here. #}
आम गलतियां
  1. गलत branch पर होते हुए merge करना, जैसे main पर git merge main चलाना, जबकि आपको उस branch पर switch करना ज़रूरी है जिसे changes receive करने चाहिए।
  2. <<<<<<< markers resolve किए बिना एक conflict के बाद continue करना, और उन्हें file में commit कर देना।
  3. git merge --squash इस्तेमाल करना और source branch की history दिखने की उम्मीद करना, जबकि यह एक combined change produce करता है जिसे आपको खुद commit करना ज़रूरी है।

Login to run this code

C/C++/Java/PHP execution requires a free account. Your code is saved — you'll land right back in the editor after logging in.