đ Git - Merging Branches (āĻŦā§āϰāĻžāĻā§āĻ āĻŽāĻžāϰā§āĻ āĻāϰāĻž) â
Git-āĻ āĻāĻ āĻŦāĻž āĻāĻāĻžāϧāĻŋāĻ āĻŦā§āϰāĻžāĻā§āĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻ āύā§āϝ āĻāĻāĻāĻŋ āĻŦā§āϰāĻžāĻā§āĻā§ āĻŽāĻžāϰā§āĻ (merge) āĻāϰāĻžāϰ āĻĒā§āϰāĻā§āϰāĻŋā§āĻž āĻā§āĻŦāĻ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖāĨ¤ āĻŽāĻžāϰā§āĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻĒāύāĻŋ āĻāĻāĻžāϧāĻŋāĻ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻŦāĻž āĻāĻžāĻā§āϰ āĻŦā§āϰāĻžāĻā§āĻāĻā§āϞāĻŋāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
đ āĻŽāĻžāϰā§āĻ āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻŦā§āϏāĻŋāĻ â
git merge branch-name
git merge branch-name
āĻāĻāĻŋ āĻŦāϰā§āϤāĻŽāĻžāύ āĻŦā§āϰāĻžāĻā§āĻā§ āĻāϞā§āϞā§āĻāĻŋāϤ āĻŦā§āϰāĻžāĻā§āĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻŽāĻžāϰā§āĻ āĻāϰāĻŦā§āĨ¤
đš āĻāĻĻāĻžāĻšāϰāĻŖ:
git merge feature/new-ui
git merge feature/new-ui
āĻāĻāĻŋ main āĻŦā§āϰāĻžāĻā§āĻā§ feature/new-ui
āĻŦā§āϰāĻžāĻā§āĻā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻŽāĻžāϰā§āĻ āĻāϰāĻŦā§āĨ¤
đ§ āĻŽāĻžāϰā§āĻāĻŋāĻ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰā§? â
- Git āĻŦāϰā§āϤāĻŽāĻžāύ āĻŦā§āϰāĻžāĻā§āĻā§āϰ āϏāĻžāĻĨā§ āĻŽāĻžāϰā§āĻ āĻāϰāϤ⧠āĻāĻžāĻā§āĻž āĻŦā§āϰāĻžāĻā§āĻā§āϰ āĻāϤāĻŋāĻšāĻžāϏ āϤā§āϞāύāĻž āĻāϰā§āĨ¤
- āϝāĻĻāĻŋ āĻā§āύ⧠āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āύāĻž āĻĨāĻžāĻā§, Git āϏā§āĻŦā§āĻāĻā§āϰāĻŋā§āĻāĻžāĻŦā§ āĻŽāĻžāϰā§āĻ āĻāϰāĻŦā§āĨ¤
- āϝāĻĻāĻŋ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĨāĻžāĻā§, Git āĻāĻĒāύāĻžāĻā§ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻŽā§āϝāĻžāύā§ā§āĻžāϞāĻŋ āϰā§āĻāϞāĻ āĻāϰāϤ⧠āĻŦāϞāĻŦā§āĨ¤
⥠āĻŽāĻžāϰā§āĻ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ â
āĻŽāĻžāϰā§āĻā§āϰ āϏāĻŽā§ āϝāĻĻāĻŋ āĻāĻāĻ āϞāĻžāĻāύ⧠āĻāĻŋāύā§āύ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻž āĻšā§ā§ āĻĨāĻžāĻā§, āϤāĻŦā§ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāύāĻĢā§āϞāĻŋāĻā§āĻā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ āύāĻŋāĻā§ āĻĻā§ā§āĻž āĻšāϞā§:
āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻāĻĻāĻžāĻšāϰāĻŖ: â
- feature/login āĻŦā§āϰāĻžāĻā§āĻā§
login.js
āĻĢāĻžāĻāϞ⧠āĻāĻŋāĻā§ āĻā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšā§ā§āĻā§āĨ¤ - feature/signup āĻŦā§āϰāĻžāĻā§āĻā§ āĻāĻāĻ āĻĢāĻžāĻāϞ⧠āĻāϞāĻžāĻĻāĻž āĻāĻŋāĻā§ āĻā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻšā§ā§āĻā§āĨ¤
āĻāĻāύ, āϝāĻĻāĻŋ āĻāĻĒāύāĻŋ main āĻŦā§āϰāĻžāĻā§āĻā§ āĻāĻ āĻĻā§āĻāĻāĻŋ āĻŦā§āϰāĻžāĻā§āĻ āĻŽāĻžāϰā§āĻ āĻāϰā§āύ, āϤāĻŦā§ Git āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§ āĻāĻŦāĻ āĻāĻĒāύāĻžāĻā§ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞāĻ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤
đ āĻŽāĻžāϰā§āĻā§āϰ āĻĒāϰ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞāĻ āĻāϰāĻžāϰ āĻĒāĻĻāĻā§āώā§āĻĒ: â
ā§§. āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĢāĻžāĻāϞ āĻā§āĻāĻā§āύ: â
git status
git status
āĻāĻāĻŋ āĻĻā§āĻāĻžāĻŦā§ āϝ⧠āĻā§āύ āĻĢāĻžāĻāϞāĻā§āϞāĻŋāϤ⧠āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§ā§āĻā§āĨ¤
⧍. āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§āύ: â
āĻĢāĻžāĻāϞāĻāĻŋ āĻā§āϞ⧠āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϏā§āĻāĻŽā§āύā§āĻ āĻā§āϞāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύāĨ¤ āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ:
<<<<<<< HEAD
console.log("This is the main branch change");
=======
console.log("This is the feature branch change");
>>>>>>> feature/login
<<<<<<< HEAD
console.log("This is the main branch change");
=======
console.log("This is the feature branch change");
>>>>>>> feature/login
āĻāĻāĻžāύ⧠āĻāĻĒāύāĻŋ āϏāĻ āĻŋāĻ āĻā§āĻĄ āύāĻŋāϰā§āĻŦāĻžāĻāύ āĻāϰ⧠āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞāĻ āĻāϰāĻŦā§āύāĨ¤
ā§Š. āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϏāĻŽāĻžāϧāĻžāύ āĻāϰāĻžāϰ āĻĒāϰ: â
git add conflicted-file.js
git commit
git add conflicted-file.js
git commit
āĻāĻāĻŋ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞāĻ āĻšāĻā§āĻžāϰ āĻĒāϰ āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻāϰāĻŦā§āĨ¤
đ§ Fast-Forward āĻŽāĻžāϰā§āĻ â
āĻāĻāύ⧠āĻāĻāύā§, āĻāĻāĻāĻŋ āĻŦā§āϰāĻžāĻā§āĻā§āϰ āϏāĻŦāĻāĻŋāĻā§ āϏāϰāĻžāϏāϰāĻŋ āύāϤā§āύ āĻŦā§āϰāĻžāĻā§āĻā§āϰ āĻŽāϤ⧠āĻĨāĻžāĻā§ āĻāĻŦāĻ āĻā§āύāĻ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻāĻžā§āĻžāĻ āĻŽāĻžāϰā§āĻ āĻāϰāĻž āϝāĻžā§āĨ¤ āĻāĻāĻŋāĻā§ fast-forward merge āĻŦāϞāĻž āĻšā§āĨ¤
đš āĻāĻĻāĻžāĻšāϰāĻŖ:
āϧāϰāĻž āϝāĻžāĻ, āĻāĻĒāύāĻŋ main
āĻŦā§āϰāĻžāĻā§āĻā§ āĻāĻā§āύ āĻāĻŦāĻ feature/add-new-feature
āĻŦā§āϰāĻžāĻā§āĻāĻāĻŋ main
āĻŦā§āϰāĻžāĻā§āĻā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻāĻžāĻ āĻāϰā§āĻā§āĨ¤ āĻāĻ āĻā§āώā§āϤā§āϰā§, āĻāĻĒāύāĻŋ āϝāĻāύ main
āĻŦā§āϰāĻžāĻā§āĻā§ feature/add-new-feature
āĻŽāĻžāϰā§āĻ āĻāϰāĻŦā§āύ, āϤāĻāύ āĻāĻāĻŋ āĻāĻāĻāĻŋ fast-forward merge āĻšāĻŦā§āĨ¤
git checkout main
git merge feature/add-new-feature
git checkout main
git merge feature/add-new-feature
āĻāĻāĻŋ āĻŦā§āϰāĻžāĻā§āĻā§ āĻā§āύ⧠āĻŽāĻžāϰā§āĻ āĻāĻŽāĻŋāĻ āĻāĻžā§āĻžāĻ āϏāϰāĻžāϏāϰāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞ⧠āϝā§āĻā§āϤ āĻāϰāĻŦā§āĨ¤
đ Rebase vs Merge â
āĻŽāĻžāϰā§āĻ āĻāϰāĻžāϰ āϏāĻŽā§ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻŽāĻžāϰā§āĻ āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻšāϤ⧠āĻĒāĻžāϰā§, āϝāĻž āĻāϤāĻŋāĻšāĻžāϏāĻā§ āĻāĻŋāĻā§āĻāĻž āĻŦāĻŋāĻļā§āĻā§āĻāϞ āĻāϰ⧠āĻĢā§āϞāϤ⧠āĻĒāĻžāϰā§āĨ¤ āĻāĻā§ āĻā§āĻžāύā§āϰ āĻāύā§āϝ āĻāĻĒāύāĻŋ rebase āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύāĨ¤
āĻāĻĻāĻžāĻšāϰāĻŖ: â
- āĻŽāĻžāϰā§āĻ āĻāĻŽāĻžāύā§āĻĄ:
git checkout main
git merge feature/add-new-feature
git checkout main
git merge feature/add-new-feature
āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻŽāĻžāϰā§āĻ āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻāϰāĻŦā§āĨ¤
- Rebase āĻāĻŽāĻžāύā§āĻĄ:
git checkout feature/add-new-feature
git rebase main
git checkout feature/add-new-feature
git rebase main
āĻāĻāĻŋ āĻāϤāĻŋāĻšāĻžāϏā§āϰ āĻŽāϧā§āϝ⧠āĻŽāĻžāϰā§āĻ āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āύāĻž āĻāϰ⧠āϏāϰāĻžāϏāϰāĻŋ āĻāĻĒāĻĄā§āĻ āĻāϰāĻŦā§āĨ¤
đ§âđģ āĻāĻĻāĻžāĻšāϰāĻŖ ā§§: āĻāĻāĻ āĻŦā§āϰāĻžāĻā§āĻ āĻŽāĻžāϰā§āĻ â
git checkout main
git merge feature/landing-page
git checkout main
git merge feature/landing-page
āĻāĻāĻŋ feature/landing-page
āĻŦā§āϰāĻžāĻā§āĻāĻā§ main
āĻŦā§āϰāĻžāĻā§āĻā§ āĻŽāĻžāϰā§āĻ āĻāϰāĻŦā§āĨ¤
đ§âđģ āĻāĻĻāĻžāĻšāϰāĻŖ ⧍: āĻŽāĻžāϰā§āĻā§āϰ āĻĒāϰ⧠āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϏāĻŽāĻžāϧāĻžāύ â
git checkout main
git merge feature/authentication
# āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻšā§
# āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻŽā§āϝāĻžāύā§ā§āĻžāϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§āύ
git add conflict-file.js
git commit
git checkout main
git merge feature/authentication
# āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻšā§
# āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĢāĻžāĻāϞāĻā§āϞāĻŋ āĻŽā§āϝāĻžāύā§ā§āĻžāϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻāϰā§āύ
git add conflict-file.js
git commit
đ§âđģ āĻāĻĻāĻžāĻšāϰāĻŖ ā§Š: Fast-Forward āĻŽāĻžāϰā§āĻ â
git checkout main
git merge feature/new-feature
git checkout main
git merge feature/new-feature
āĻāĻāĻŋ āĻāĻāĻāĻŋ fast-forward āĻŽāĻžāϰā§āĻ āĻšāĻŦā§ āϝāĻĻāĻŋ feature/new-feature
āĻŦā§āϰāĻžāĻā§āĻā§āϰ āϏāĻŽāϏā§āϤ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ main
āĻŦā§āϰāĻžāĻā§āĻā§āϰ āĻŦāϰā§āϤāĻŽāĻžāύ āĻāϤāĻŋāĻšāĻžāϏā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻĨāĻžāĻā§āĨ¤
đ§âđģ āĻāĻĻāĻžāĻšāϰāĻŖ ā§Ē: āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞāĻ āĻāϰāĻžāϰ āĻĒāϰ āύāϤā§āύ āĻŦā§āϰāĻžāĻā§āĻā§ āĻŽāĻžāϰā§āĻ â
git checkout main
git merge feature/old-bugfix
# āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĨāĻžāĻā§
# āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞāĻ āĻāϰāĻžāϰ āĻĒāϰ
git commit -m "Resolved conflicts and merged feature/old-bugfix"
git checkout main
git merge feature/old-bugfix
# āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĨāĻžāĻā§
# āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞāĻ āĻāϰāĻžāϰ āĻĒāϰ
git commit -m "Resolved conflicts and merged feature/old-bugfix"
đĄ āĻ āϤāĻŋāϰāĻŋāĻā§āϤ āĻāĻŋāĻĒāϏ: â
āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϏāĻŽāĻžāϧāĻžāύā§āϰ āϏāĻŽā§:
- Git āĻāύāĻĢā§āϞāĻŋāĻā§āĻā§āϰ āĻŽāϧā§āϝā§
<<<<<<< HEAD
āĻāĻŦāĻ=======
āĻāĻŋāĻšā§āύ āĻĻā§āĻŦāĻžāϰāĻž āĻĻā§āĻāĻŋ āϏāĻāϏā§āĻāϰāĻŖ āĻāϞāĻžāĻĻāĻž āĻāϰā§āĨ¤ - āĻāĻĒāύāĻžāϰ āĻāĻžāĻ āĻšāĻā§āĻā§ āϏā§āĻā§āϞ⧠āϏāĻ āĻŋāĻāĻāĻžāĻŦā§ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāĻžāĨ¤
- Git āĻāύāĻĢā§āϞāĻŋāĻā§āĻā§āϰ āĻŽāϧā§āϝā§
git merge --no-ff
:- āĻāĻ āĻ āĻĒāĻļāύāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϞ⧠Git āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŽāĻžāϰā§āĻā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āύāϤā§āύ āĻāĻŽāĻŋāĻ āϤā§āϰāĻŋ āĻāϰāĻŦā§, āĻāĻŽāύāĻāĻŋ āϝāĻĻāĻŋ āĻŽāĻžāϰā§āĻāĻāĻŋ āĻĢāĻžāϏā§āĻ-āĻĢāϰāĻā§āĻžāϰā§āĻĄ āĻšā§āĨ¤
bashgit merge --no-ff feature/bugfix
git merge --no-ff feature/bugfix
git merge --squash
:- āĻāĻāĻŋ āϏāĻŦāĻā§āϞ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰ⧠āĻāĻāĻāĻŋ āĻāĻāĻ āĻāĻŽāĻŋāĻā§ āĻŽāĻžāϰā§āĻ āĻāϰāĻŦā§, āϝāĻžāϤ⧠āĻāϤāĻŋāĻšāĻžāϏ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻĨāĻžāĻā§āĨ¤
bashgit merge --squash feature/new-feature git commit -m "Merged feature/new-feature with squash"
git merge --squash feature/new-feature git commit -m "Merged feature/new-feature with squash"
â āĻāĻžāϞ⧠āĻ āĻā§āϝāĻžāϏ (Best Practices) â
- â āĻŽāĻžāϰā§āĻā§āϰ āĻāĻā§ āĻŦā§āϰāĻžāĻā§āĻā§āϰ āϏāϰā§āĻŦāĻļā§āώ āĻāĻĒāĻĄā§āĻ āĻā§āĻ āĻāϰā§āύāĨ¤
- â āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āϰā§āĻāϞāĻ āĻāϰāĻžāϰ āϏāĻŽā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύāĻā§āϞāĻŋāϰ āĻĒā§āϰā§āĻĒā§āϰāĻŋ āĻĒāϰā§āĻā§āώāĻž āĻāϰā§āύāĨ¤
- â āĻŽāĻžāϰā§āĻ āĻāϰāĻžāϰ āĻāĻā§ āĻāĻĒāύāĻžāϰ āϞā§āĻāĻžāϞ āĻŦā§āϰāĻžāĻā§āĻā§ āĻĒā§āϰā§ā§āĻāύā§ā§ āĻā§āϏā§āĻ āĻāĻžāϞāĻžāύāĨ¤
- â āĻĒā§āϰā§ā§āĻāύ⧠āĻŽāĻžāϰā§āĻ āĻāĻŽāĻŋāĻā§āϰ āĻāύā§āϝ āĻāĻžāϞ⧠āĻŽā§āϏā§āĻ āĻĻāĻŋāύ, āϝā§āĻŽāύ "Merged feature/login with bug fixes".
đ āϏāϤāϰā§āĻāϤāĻž â
- â ī¸ āĻŽāĻžāϰā§āĻ āĻāϰāĻžāϰ āĻĒāϰ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻĨāĻžāĻāϞ⧠āϏāĻžāĻŦāϧāĻžāύ⧠āϰā§āĻāϞāĻ āĻāϰā§āύ, āύāĻž āĻšāϞ⧠āĻĄā§āĻāĻž āĻšāĻžāϰāĻžāύā§āϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āĻĨāĻžāĻā§āĨ¤
- â ī¸
main
āĻŦāĻžmaster
āĻŦā§āϰāĻžāĻā§āĻā§āϰ āĻāĻĒāϰ āĻ āĻĒā§āϰāϤā§āϝāĻžāĻļāĻŋāϤ āĻŽāĻžāϰā§āĻ āĻāϰāĻŦā§āύ āύāĻž āϝāĻĻāĻŋ āύāĻž āĻāĻĒāύāĻŋ āύāĻŋāĻļā§āĻāĻŋāϤ āĻšāύāĨ¤