Skip to content

🔀 Git - Switching Branches (āĻŦā§āϰāĻžāĻžā§āϚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ) ​

Git āĻ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ, āφāĻĒāύāĻŋ āĻāĻ• āĻŦā§āϰāĻžāĻžā§āϚ āĻĨ⧇āϕ⧇ āφāϰ⧇āĻ• āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āϝ⧇āϤ⧇ āϚāĻžāχāϞ⧇ switch āĻŦāĻž checkout āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āύāĨ¤ āĻāϤ⧇ āφāĻĒāύāĻŋ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āϤ⧀ āĻ•āĻžāĻœā§‡āϰ āωāĻĒāϰ āĻĒā§āϰāĻ­āĻžāĻŦ āύāĻž āĻĢ⧇āϞ⧇āχ āύāϤ⧁āύ āĻ•āĻžāϜ āĻļ⧁āϰ⧁ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āύ āĻŦāĻž āĻ…āĻ¨ā§āϝ āϕ⧋āύ āĻ…āĻ‚āĻļ⧇ āĻĢāĻŋāϰ⧇ āϝ⧇āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤

🆕 ā§§. āύāϤ⧁āύ āĻĒāĻĻā§āϧāϤāĻŋ: git switch ​

Git 2.23 āĻĨ⧇āϕ⧇ git switch āĻāĻŦāĻ‚ git restore āύāĻžāĻŽā§‡āϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄ āϝ⧁āĻ•ā§āϤ āĻšā§Ÿā§‡āϛ⧇āĨ¤ āĻāϗ⧁āϞ⧋ checkout āĻāϰ āĻšā§‡ā§Ÿā§‡ āϏāĻšāϜāĻ­āĻžāĻŦ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āĻžāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āĻĄāĻŋāϜāĻžāχāύ āĻ•āϰāĻžāĨ¤

✅ āĻŦā§āϰāĻžāĻžā§āϚ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ: ​

bash
git switch branch-name
git switch branch-name

✅ āύāϤ⧁āύ āĻŦā§āϰāĻžāĻžā§āϚ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰāĻž: ​

bash
git switch -c new-branch-name
git switch -c new-branch-name

🧓 ⧍. āĻĒ⧁āϰāĻžāύ⧋ āĻĒāĻĻā§āϧāϤāĻŋ: git checkout ​

bash
git checkout branch-name
git checkout branch-name

āĻāϟāĻŋ āĻāĻ–āύāĻ“ āĻ…āύ⧇āĻ• āϜāĻžā§ŸāĻ—āĻžā§Ÿ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻšā§Ÿ āĻāĻŦāĻ‚ backward-compatibleāĨ¤

📋 āωāĻĻāĻžāĻšāϰāĻŖ ā§§: main āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻĢāĻŋāϰ⧇ āϝāĻžāĻ“ā§ŸāĻž ​

bash
git switch main
# āĻ…āĻĨāĻŦāĻž
git checkout main
git switch main
# āĻ…āĻĨāĻŦāĻž
git checkout main

đŸ§Ē āωāĻĻāĻžāĻšāϰāĻŖ ⧍: āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āĻĢāĻŋāϚāĻžāϰ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āϝāĻžāĻ“ā§ŸāĻž ​

bash
git switch feature/login-ui
git switch feature/login-ui

✨ āωāĻĻāĻžāĻšāϰāĻŖ ā§Š: āύāϤ⧁āύ āĻŦā§āϰāĻžāĻžā§āϚ āϤ⧈āϰāĻŋ āĻ•āϰ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰāĻž ​

bash
git switch -c feature/user-settings
# āϕ⧋āĻĄ āϞāĻŋāϖ⧁āύ
git add .
git commit -m "Add user settings page"
git switch -c feature/user-settings
# āϕ⧋āĻĄ āϞāĻŋāϖ⧁āύ
git add .
git commit -m "Add user settings page"

đŸ› ī¸ āωāĻĻāĻžāĻšāϰāĻŖ ā§Ē: āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ āύāϤ⧁āύ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āϝāĻžāĻ“ā§ŸāĻž ​

bash
git switch -c fix/404-error
# āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ āĻ•āϰ⧁āύ
git commit -am "Fix 404 error in route"
git switch -c fix/404-error
# āĻŦāĻžāĻ— āĻĢāĻŋāĻ•ā§āϏ āĻ•āϰ⧁āύ
git commit -am "Fix 404 error in route"

đŸ•šī¸ āωāĻĻāĻžāĻšāϰāĻŖ ā§Ģ: āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŦā§āϰāĻžāĻžā§āϚ āĻšā§‡āĻ• āĻ•āϰāĻž ​

bash
git branch
git branch

* āĻĻāĻŋā§Ÿā§‡ āφāĻĒāύāĻŋ āϕ⧋āύ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āφāϛ⧇āύ āϤāĻž āĻŦā§‹āĻāĻž āϝāĻžāĻŦ⧇āĨ¤

🔀 āωāĻĻāĻžāĻšāϰāĻŖ ā§Ŧ: āĻāĻ•āϟāĻŋ āĻŸā§āϝāĻžāĻ— āĻŦāĻž āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻ•āĻŽāĻŋāĻŸā§‡ āĻšā§‡āĻ•āφāωāϟ āĻ•āϰāĻž (Detached HEAD) ​

bash
git checkout v1.0.0
# āĻ…āĻĨāĻŦāĻž
git checkout 83f24e6
git checkout v1.0.0
# āĻ…āĻĨāĻŦāĻž
git checkout 83f24e6

âš ī¸ āĻāĻ–āĻžāύ⧇ āφāĻĒāύāĻŋ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āύāύ, HEAD detached āĻ…āĻŦāĻ¸ā§āĻĨāĻžā§Ÿ āφāϛ⧇āύāĨ¤ āϕ⧋āύ āĻ•āĻŽāĻŋāϟ āĻ•āϰāϞ⧇ āϤāĻž āφāϞāĻžāĻĻāĻž āĻĨāĻžāĻ•āĻŦ⧇āĨ¤

💡 Detached HEAD āĻĨ⧇āϕ⧇ āĻŦā§āϰāĻžāĻžā§āϚ āϤ⧈āϰāĻŋ ​

bash
git switch -c hotfix/detached-work
git switch -c hotfix/detached-work

🔁 āωāĻĻāĻžāĻšāϰāĻŖ ā§­: āφāϗ⧇āϰ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻĢāĻŋāϰ⧇ āϝāĻžāĻ“ā§ŸāĻž ​

bash
git switch -
git switch -

āĻāϟāĻŋ āφāĻĒāύāĻžāϕ⧇ āφāϗ⧇āϰ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻĢāĻŋāϰāĻŋā§Ÿā§‡ āύāĻŋā§Ÿā§‡ āϝāĻžā§Ÿ (āĻāĻ• āϧāĻžāĻĒ āĻĒ⧇āĻ›āύ⧇)āĨ¤

🔍 āωāĻĻāĻžāĻšāϰāĻŖ ā§Ž: āϏāĻŦ āĻŦā§āϰāĻžāĻžā§āĻšā§‡āϰ āϤāĻžāϞāĻŋāĻ•āĻž āĻĻ⧇āĻ–āĻž ​

bash
git branch
git branch

āϞ⧋āĻ•āĻžāϞ āĻŦā§āϰāĻžāĻžā§āϚ āĻĻ⧇āĻ–āĻžā§ŸāĨ¤

bash
git branch -a
git branch -a

āϞ⧋āĻ•āĻžāϞ + āϰāĻŋāĻŽā§‹āϟ āωāϭ⧟ āĻŦā§āϰāĻžāĻžā§āϚ āĻĻ⧇āĻ–āĻžā§ŸāĨ¤

đŸšĢ āϝāĻĻāĻŋ āφāĻĒāύāĻŋ āĻ•āĻžāϜ āύāĻž āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āύ? ​

bash
git switch branch-name
git switch branch-name

âš ī¸ āϝāĻĻāĻŋ āφāĻĒāύāĻžāϰ āĻŦāĻ°ā§āϤāĻŽāĻžāύ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āφāύāĻ•āĻŽāĻŋāĻŸā§‡āĻĄ āĻšā§‡āĻžā§āϜ āĻĨāĻžāϕ⧇, Git āφāĻĒāύāĻžāϕ⧇ āĻ¸ā§āϝ⧁āχāϚ āĻ•āϰāϤ⧇ āĻĻ⧇āĻŦ⧇ āύāĻžāĨ¤

āϏāĻŽāĻžāϧāĻžāύ ā§§: āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ¸ā§āĻŸā§āϝāĻžāĻļ āĻ•āϰ⧁āύ ​

bash
git stash
git switch branch-name
git stash
git switch branch-name

āϏāĻŽāĻžāϧāĻžāύ ⧍: āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻ•āĻŽāĻŋāϟ āĻ•āϰ⧁āύ ​

bash
git add .
git commit -m "WIP: incomplete work"
git switch branch-name
git add .
git commit -m "WIP: incomplete work"
git switch branch-name

🧠 Best Practices ​

  • ✅ āĻ•āĻžāϜ āĻļ⧁āϰ⧁āϰ āφāϗ⧇ āϏāĻ āĻŋāĻ• āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āφāϛ⧇āύ āĻ•āĻŋ āύāĻž āύāĻŋāĻļā§āϚāĻŋāϤ āĻšā§‹āύ
  • ✅ āĻŦā§āϰāĻžāĻžā§āϚ āύāĻžāĻŽ āĻ…āĻ°ā§āĻĨāĻŦā§‹āϧāĻ• āĻĻāĻŋāύ (feature/, fix/, docs/, refactor/)
  • ✅ āύāϤ⧁āύ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āĻ•āĻžāϜ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āϏāĻŽā§Ÿ git switch -c āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧁āύ
  • ❌ main āĻŦāĻž master āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āϏāϰāĻžāϏāϰāĻŋ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇āύ āύāĻž
  • ✅ āĻŦāĻžāϰāĻŦāĻžāϰ git branch āϚāĻžāϞāĻŋā§Ÿā§‡ āĻŦā§āϰāĻžāĻžā§āϚ āĻ…āĻŦāĻ¸ā§āĻĨāĻž āĻĻ⧇āϖ⧁āύ

Released under the MIT License.