Skip to Content
DocsGit & GitHubBranching & Merging

Branching & Merging

⚡

Essential | Estimated time: 60–90 minutes

Branch āĻšāϞ⧋ Git-āĻāϰ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ powerful featureāĨ¤ āĻāϟāĻž āĻŦā§‹āĻāĻžāϰ āĻĒāϰ āϤ⧁āĻŽāĻŋ āĻŦ⧁āĻāĻŦ⧇ āϕ⧇āύ āĻĒ⧁āϰ⧋ āĻĻ⧁āύāĻŋāϝāĻŧāĻž Git āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇āĨ¤

What You’ll Learn

  • Branch āϕ⧀ āĻāĻŦāĻ‚ āϕ⧇āύ āĻĻāϰāĻ•āĻžāϰ
  • Branch āĻŦāĻžāύāĻžāύ⧋, switch āĻ•āϰāĻž, delete āĻ•āϰāĻž
  • Branch naming convention (real company style)
  • Merge āĻ•āϰāĻž — branch-āĻāϰ āĻ•āĻžāϜ main-āĻ āφāύāĻž
  • Merge conflict — āϕ⧀ āĻšāϝāĻŧ, āϕ⧀āĻ­āĻžāĻŦ⧇ fix āĻ•āϰ⧇
  • git stash — āĻ•āĻžāĻœā§‡āϰ āĻŽāĻžāĻā§‡ āĻšāĻ āĻžā§Ž switch āĻ•āϰāϤ⧇ āĻšāϞ⧇

Branch Overview

āĻŦā§āϰāĻžāĻžā§āϚ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻžāϰ āĻāĻ•āϟāĻŋ āϏāĻšāϜ āĻŽāĻžāύāϏāĻŋāĻ• āϧāĻžāϰāĻŖāĻž (Mental Model) āĻŦ⧁āĻā§‡ āύāĻžāĻ“āĨ¤

āĻ•āĻ˛ā§āĻĒāύāĻž āĻ•āϰ⧋ āϤ⧁āĻŽāĻŋ āĻāĻ•āϟāĻž āĻŦāχāϝāĻŧ⧇āϰ writerāĨ¤ āĻŦāχāϟāĻž already published — āϏ⧇āϟāĻž āĻšāϞ⧋ main branchāĨ¤

āĻāĻ–āύ āϤ⧁āĻŽāĻŋ āύāϤ⧁āύ āĻāĻ•āϟāĻž chapter āϞāĻŋāĻ–āϤ⧇ āϚāĻžāĻ“āĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϏāϰāĻžāϏāϰāĻŋ published āĻŦāχ-āĻ āϞāĻŋāĻ–āĻŦ⧇ āύāĻž, āϤāĻžāχ āύāĻž? āϤ⧁āĻŽāĻŋ āĻāĻ•āϟāĻž āφāϞāĻžāĻĻāĻž draft āĻ–āĻžāϤāĻž āύ⧇āĻŦ⧇, āϏ⧇āĻ–āĻžāύ⧇ āϞāĻŋāĻ–āĻŦ⧇, edit āĻ•āϰāĻŦ⧇ — āϝāĻ–āύ ready āĻšāĻŦ⧇ āϤāĻ–āύ published āĻŦāχ-āĻ āϝ⧋āĻ— āĻ•āϰāĻŦ⧇āĨ¤

Git-āĻ āϏ⧇āχ āφāϞāĻžāĻĻāĻž draft āĻ–āĻžāϤāĻžāϟāĻžāχ āĻšāϞ⧋ branchāĨ¤

āύāĻŋāĻšā§‡āϰ āĻĄāĻžā§ŸāĻžāĻ—ā§āϰāĻžāĻŽāϟāĻŋ āĻ–ā§‡ā§ŸāĻžāϞ āĻ•āϰ⧋:

  • main branch: āϤ⧋āĻŽāĻžāϰ āĻŦāĻ‡ā§Ÿā§‡āϰ āĻĒāĻžāĻŦāϞāĻŋāĻļāĻĄ āĻ…āĻ‚āĻļ (Commits A āĻĨ⧇āϕ⧇ D).
  • feature/new-chapter branch: āύāϤ⧁āύ āĻšā§āϝāĻžāĻĒā§āϟāĻžāϰ āϞ⧇āĻ–āĻžāϰ āĻĄā§āϰāĻžāĻĢāϟ āĻ–āĻžāϤāĻž (Commits E, F, G).
  • Merge: āĻ•āĻžāϜ āĻļ⧇āώ⧇ āĻĄā§āϰāĻžāĻĢāϟ āĻ…āĻ‚āĻļāϟāĻŋ āφāĻŦāĻžāϰ main āĻŦāĻ‡ā§Ÿā§‡āϰ āϏāĻžāĻĨ⧇ āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻž āĻšā§Ÿā§‡āϛ⧇āĨ¤

Real life-āĻ āϕ⧇āύ āĻĻāϰāĻ•āĻžāϰ:

  • āϤ⧁āĻŽāĻŋ āύāϤ⧁āύ feature āĻŦāĻžāύāĻžāĻšā§āĻ›, teammate bug fix āĻ•āϰāϛ⧇ — āĻĻ⧁āχāϜāύ āφāϞāĻžāĻĻāĻž branch-āĻ āĻ•āĻžāϜ āĻ•āϰāĻŦ⧇, āĻāĻ•āϜāύ āφāϰ⧇āĻ•āϜāύ⧇āϰ āĻ•āĻžāϜ āύāĻˇā§āϟ āĻ•āϰāĻŦ⧇ āύāĻž
  • āϕ⧋āύ⧋ feature half-done āĻĨāĻžāĻ•āϞ⧇āĻ“ main branch āϏāĻŦāϏāĻŽāϝāĻŧ working āĻĨāĻžāĻ•āĻŦ⧇
  • āĻ•āĻŋāϛ⧁ āϭ⧁āϞ āĻšāϞ⧇ branch delete āĻ•āϰ⧇ āĻĻāĻžāĻ“ — main āĻ…āĻ•ā§āώāϤ āĻĨāĻžāĻ•āĻŦ⧇

Basic Commands

āĻŦā§āϰāĻžāĻžā§āϚ āϤ⧈āϰāĻŋ āĻ•āϰāĻž, āĻĄāĻŋāϞāĻŋāϟ āĻ•āϰāĻž āĻāĻŦāĻ‚ āĻāĻ• āĻŦā§āϰāĻžāĻžā§āϚ āĻĨ⧇āϕ⧇ āĻ…āĻ¨ā§āϝ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āϝāĻžāĻ“ā§ŸāĻžāϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϗ⧁āϞ⧋ āĻĻ⧇āĻ–ā§‹āĨ¤

Terminal
git branch feature/login-page

āĻāϟāĻž āĻļ⧁āϧ⧁ branch āĻŦāĻžāύāĻžāϝāĻŧ, switch āĻ•āϰ⧇ āύāĻžāĨ¤

Pro Tip: Branch delete āĻ•āϰāϞ⧇ āϏ⧇āχ branch-āĻāϰ commits āĻšāĻžāϰāĻžāϝāĻŧ āύāĻž — āϝāĻĻāĻŋ merge āĻšāϝāĻŧ⧇ āĻĨāĻžāϕ⧇āĨ¤ Merge āĻšāĻ“āϝāĻŧāĻž āĻŽāĻžāύ⧇ āϏ⧇āχ āĻ•āĻžāϜ main-āĻ āϚāϞ⧇ āϗ⧇āϛ⧇āĨ¤

Naming Convention

āĻĒ⧇āĻļāĻžāĻĻāĻžāϰ āϕ⧋āĻŽā§āĻĒāĻžāύāĻŋāϗ⧁āϞ⧋āϤ⧇ āĻŦā§āϰāĻžāĻžā§āĻšā§‡āϰ āύāĻžāĻŽ āĻĻ⧇āĻ“ā§ŸāĻžāϰ āĻ•āĻŋāϛ⧁ āĻ¸ā§āĻŸā§āϝāĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄ āύāĻŋ⧟āĻŽāĨ¤

Real company-āϤ⧇ branch-āĻāϰ āύāĻžāĻŽ āĻĻ⧇āĻ–āϞ⧇āχ āĻŦā§‹āĻāĻž āϝāĻžāϝāĻŧ āϏ⧇ āϕ⧀ āĻ•āϰāϛ⧇āĨ¤ āĻāϟāĻž āĻāĻ•āϟāĻž standard follow āĻ•āϰ⧇:

PrefixāĻ•āĻ–āύ āĻŦā§āϝāĻŦāĻšāĻžāϰāωāĻĻāĻžāĻšāϰāĻŖ
feature/āύāϤ⧁āύ āĻ•āĻŋāϛ⧁ āĻŦāĻžāύāĻžāĻšā§āĻ›feature/user-login
fix/Bug fix āĻ•āϰāĻ›fix/broken-navbar
hotfix/Live site-āĻ emergency fixhotfix/payment-crash
chore/Code cleanup, dependency updatechore/update-packages
docs/Documentation āϞāĻŋāĻ–āĻ›docs/api-guide
Terminal
mybranch test new fix1 asdf

Branch Workflow

āĻāĻ•āϟāĻŋ āĻŦāĻžāĻ¸ā§āϤāĻŦ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻŦā§āϰāĻžāĻžā§āϚāĻŋāĻ‚ āĻāϰ āĻĒ⧁āϰ⧋ āĻ•āĻžāϜ āĻļ⧁āϰ⧁ āĻĨ⧇āϕ⧇ āĻļ⧇āώ āĻĒāĻ°ā§āϝāĻ¨ā§āϤ āĻĻ⧇āĻ–ā§‹āĨ¤

āĻāĻ•āϟāĻž real scenario āĻĻāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–āĻŋāĨ¤ āϧāϰ⧋ āϤ⧁āĻŽāĻŋ āĻāĻ•āϟāĻž website-āĻ āĻ•āĻžāϜ āĻ•āϰāĻ› āĻāĻŦāĻ‚ āύāϤ⧁āύ “Contact Us” page āĻŦāĻžāύāĻžāϤ⧇ āĻšāĻŦ⧇āĨ¤

Checkout & Pull

āφāϗ⧇ main-āĻ āϝāĻžāĻ“ āĻāĻŦāĻ‚ latest āύāĻžāĻŽāĻžāĻ“:

Terminal
git switch main git pull

Create Branch

āύāϤ⧁āύ branch āĻŦāĻžāύāĻžāĻ“:

Terminal
git switch -c feature/contact-page

Work and Commit

āĻ•āĻŋāϛ⧁ file āĻŦāĻžāύāĻžāĻ“ āĻāĻŦāĻ‚ commit āĻ•āϰ⧋:

Terminal
touch contact.html echo "<h1>Contact Us</h1>" > contact.html git add contact.html git commit -m "Add contact page with basic structure"

Continuous Work

āφāϰāĻ“ āĻ•āĻžāϜ āĻ•āϰ⧋ āĻāĻŦāĻ‚ āϏ⧇āϗ⧁āϞ⧋āϕ⧇āĻ“ āĻ—āĻŋāĻŸā§‡āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻŸā§āĻ°ā§āϝāĻžāĻ• āĻ•āϰ⧋āĨ¤

āφāϰāĻ“ āĻ•āĻžāϜ āĻ•āϰ⧋, āφāϰāĻ“ commit āĻ•āϰ⧋:

Terminal
echo "<p>Email: hello@example.com</p>" >> contact.html git add contact.html git commit -m "Add email address to contact page"

Push Branch

āϤ⧋āĻŽāĻžāϰ āϤ⧈āϰāĻŋ āĻ•āϰāĻž āϞ⧋āĻ•āĻžāϞ āĻŦā§āϰāĻžāĻžā§āϚāϟāĻŋ āĻ—āĻŋāϟāĻšāĻžāĻŦ⧇ āφāĻĒāϞ⧋āĻĄ āĻ•āϰ⧋āĨ¤

Branch GitHub-āĻ push āĻ•āϰ⧋:

Terminal
git push -u origin feature/contact-page

āĻāĻ–āύ āϤ⧋āĻŽāĻžāϰ branch GitHub-āĻāĻ“ āφāϛ⧇āĨ¤ Teammate āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻŦ⧇āĨ¤

Merge Branches

āĻāĻ• āĻŦā§āϰāĻžāĻžā§āĻšā§‡āϰ āĻ•āĻžāϜ āĻ…āĻ¨ā§āϝ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ (āϏāĻžāϧāĻžāϰāĻŖāϤ āĻŽā§‡āχāύ āĻŦā§āϰāĻžāĻžā§āĻšā§‡) āϝ⧁āĻ•ā§āϤ āĻ•āϰāĻžāϰ āĻĒā§āϰāĻ•ā§āϰāĻŋ⧟āĻžāĨ¤

Branch-āĻāϰ āĻ•āĻžāϜ āĻļ⧇āώāĨ¤ āĻāĻ–āύ āϏ⧇āϟāĻž main-āĻ āφāύāϤ⧇ āĻšāĻŦ⧇āĨ¤

Terminal
# āĻĒā§āϰāĻĨāĻŽā§‡ main-āĻ āϝāĻžāĻ“ git switch main # latest pull āĻ•āϰ⧋ git pull # feature branch merge āĻ•āϰ⧋ git merge feature/contact-page

Output (smooth merge āĻšāϞ⧇):

Updating a1b2c3d..e4f5g6h Fast-forward contact.html | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 contact.html

Clean up: Merge āĻšāϝāĻŧ⧇ āϗ⧇āϞ⧇ branch āφāϰ āĻĻāϰāĻ•āĻžāϰ āύ⧇āχāĨ¤

Terminal
# Local branch delete git branch -d feature/contact-page # GitHub āĻĨ⧇āϕ⧇āĻ“ delete āĻ•āϰ⧋ git push origin --delete feature/contact-page

Merge Conflict

āĻāĻ•āχ āĻĢāĻžāχāϞ⧇ āĻāĻ•āĻžāϧāĻŋāĻ• āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āĻāϞ⧇ āϕ⧀āĻ­āĻžāĻŦ⧇ āϤāĻž āĻŽā§āϝāĻžāύ⧁⧟āĻžāϞāĻŋ āĻĢāĻŋāĻ•ā§āϏ āĻ•āϰāϤ⧇ āĻšā§ŸāĨ¤

Conflict Causes

āĻ•āĻ–āύ āĻāĻŦāĻ‚ āϕ⧇āύ āĻ—āĻŋāϟ āĻŽāĻžāĻ°ā§āϜ āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āϤ⧈āϰāĻŋ āĻšā§Ÿ āϏ⧇āϟāĻŋ āĻŦ⧁āĻā§‡ āύāĻžāĻ“āĨ¤

āϤ⧁āĻŽāĻŋ āφāϰ āϤ⧋āĻŽāĻžāϰ teammate āĻāĻ•āχ file-āĻāϰ āĻāĻ•āχ line āĻĻ⧁āχāϜāύ āĻĻ⧁āχāĻ­āĻžāĻŦ⧇ edit āĻ•āϰāϞ⧇ Git āĻŦ⧁āĻāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻž āϕ⧋āύāϟāĻž āϰāĻžāĻ–āĻŦ⧇āĨ¤ āϤāĻ–āύ āϏ⧇ āϤ⧋āĻŽāĻžāϕ⧇ āϜāĻŋāĻœā§āĻžā§‡āϏ āĻ•āϰ⧇ — “āϤ⧁āĻŽāĻŋ āĻ āĻŋāĻ• āĻ•āϰ⧋āĨ¤â€œ

Conflict Syntax

āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āϞāĻžāĻ—āϞ⧇ āϕ⧋āĻĄ āĻĢāĻžāχāϞ⧇āϰ āϭ⧇āϤāϰ⧇ āϝāĻž āĻĒāϰāĻŋāĻŦāĻ°ā§āϤāύ āφāϏ⧇ āϤāĻž āϚāĻŋāύ⧇ āύāĻžāĻ“āĨ¤

Terminal
git merge feature/about-page

Output:

Auto-merging index.html CONFLICT (content): Merge conflict in index.html Automatic merge failed; fix conflicts and then commit the result.

index.html file āϖ⧁āϞāϞ⧇ āĻĻ⧇āĻ–āĻŦ⧇:

<<<<<<< HEAD <title>My Awesome Website</title> ======= <title>My Portfolio Website</title> >>>>>>> feature/about-page

Resolve Conflict

āϏāĻšāϜ āĻ•āĻŋāϛ⧁ āϧāĻžāĻĒ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āĻŽāĻžāĻ°ā§āϜ āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāĻžāϰ āύāĻŋ⧟āĻŽāĨ¤

āϤ⧋āĻŽāĻžāϕ⧇ decide āĻ•āϰāϤ⧇ āĻšāĻŦ⧇ āϕ⧋āύāϟāĻž āϰāĻžāĻ–āĻŦ⧇āĨ¤ āϤāĻŋāύāϟāĻž option:

<title>My Awesome Website</title>

Fix āĻ•āϰāĻžāϰ āĻĒāϰ <<<<<<<, =======, >>>>>>> lines āϗ⧁āϞ⧋ āϏāĻŦ āĻŽā§āϛ⧇ āĻĻāĻžāĻ“āĨ¤

āϤāĻžāϰāĻĒāϰ:

Terminal
git add index.html git commit -m "Merge feature/about-page: resolve title conflict"

VS Code Conflict Helper: VS Code conflict āĻĻ⧇āĻ–āϞ⧇ automatically “Accept Current Change / Accept Incoming Change / Accept Both” āĻŦāĻžāϟāύ āĻĻ⧇āĻ–āĻžāϝāĻŧāĨ¤ Button click āĻ•āϰāϞ⧇āχ āĻšāϝāĻŧ, manually edit āĻ•āϰāϤ⧇ āĻšāϝāĻŧ āύāĻžāĨ¤

Prevent Conflicts

āĻ­āĻŦāĻŋāĻˇā§āϝāϤ⧇ āĻŽāĻžāĻ°ā§āϜ āĻ•āύāĻĢā§āϞāĻŋāĻ•ā§āϟ āĻ•āĻŽāĻŋā§Ÿā§‡ āφāύāĻžāϰ āĻ•āĻŋāϛ⧁ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ⧀ āϟāĻŋāĻĒāϏāĨ¤

  • āĻ•āĻžāϜ āĻļ⧁āϰ⧁āϰ āφāϗ⧇ āϏāĻŦāϏāĻŽāϝāĻŧ git pull āĻ•āϰ⧋
  • āϛ⧋āϟ āϛ⧋āϟ commits āĻ•āϰ⧋, āĻŦāĻĄāĻŧ āύāĻž
  • āĻāĻ•āχ file-āĻ āĻĻ⧁āχāϜāύ āĻ•āĻžāϜ āĻ•āϰāϞ⧇ āφāϗ⧇ āĻĨ⧇āϕ⧇ āĻŦāϞ⧇ āϰāĻžāĻ–ā§‹

Git Stash

āĻ…āĻ°ā§āϧ⧇āĻ• āĻ•āϰāĻž āĻ•āĻžāϜāϗ⧁āϞ⧋ āϏāĻžāĻŽā§ŸāĻŋāĻ•āĻ­āĻžāĻŦ⧇ āϜāĻŽāĻž āϰāĻžāĻ–āĻž āĻāĻŦāĻ‚ āĻĒāϰ⧇ āφāĻŦāĻžāϰ āĻļ⧁āϰ⧁ āĻ•āϰāĻžāϰ āωāĻĒāĻžā§ŸāĨ¤

Stash Scenarios

āĻ•āĻ–āύ āϤ⧋āĻŽāĻžāϰ āĻ—āĻŋāϟ āĻ¸ā§āĻŸā§āϝāĻžāĻļ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϟāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āωāϚāĻŋāϤ āϏ⧇āϟāĻŋ āĻŦ⧁āĻā§‡ āύāĻžāĻ“āĨ¤

āϤ⧁āĻŽāĻŋ feature/login branch-āĻ āĻ•āĻžāϜ āĻ•āϰāĻ› — āĻ…āĻ°ā§āϧ⧇āĻ• āĻšāϝāĻŧ⧇āϛ⧇, commit āĻ•āϰāĻžāϰ āĻŽāϤ⧋ āύāĻžāĨ¤ āĻšāĻ āĻžā§Ž boss āĻŦāϞāϞ “main branch-āĻ āĻāĻ•āϟāĻž critical bug fix āĻ•āϰ⧋ āĻāĻ–āύāχāĨ¤â€

āϤ⧁āĻŽāĻŋ āϕ⧀ āĻ•āϰāĻŦ⧇? Half-done āĻ•āĻžāϜ commit āĻ•āϰāĻŦ⧇? āϏāĻŦ delete āĻ•āϰāĻŦ⧇?

āύāĻž — stash āĻ•āϰāĻŦ⧇āĨ¤ Stash āĻšāϞ⧋ āĻāĻ•āϟāĻž temporary drawer — āĻ•āĻžāϜ āϏ⧇āĻ–āĻžāύ⧇ āϰ⧇āϖ⧇ āĻĻāĻžāĻ“, āĻĒāϰ⧇ āĻĢāĻŋāϰ⧇ āĻāϏ⧇ āύāĻžāĻ“āĨ¤

Stash Changes

āĻ…āĻ°ā§āϧ⧇āĻ• āĻ•āĻžāϜāϗ⧁āϞ⧋ āĻ¸ā§āĻŸā§āϝāĻžāĻļ āĻĄā§āϰāϝāĻŧāĻžāϰ⧇ āϜāĻŽāĻž āϰāĻžāĻ–āĻžāϰ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāĨ¤

Terminal
# āϏāĻŦ current changes stash āĻ•āϰ⧋ git stash

āĻāĻ–āύ āϤ⧋āĻŽāĻžāϰ working directory clean — āϝ⧇āύ āĻ•āĻŋāϛ⧁ āĻšāϝāĻŧāύāĻŋāĨ¤

Emergency Work

āĻ¸ā§āĻŸā§āϝāĻžāĻļ āĻ•āϰāĻžāϰ āĻĒāϰ āϤ⧁āĻŽāĻŋ āĻāĻ–āύ āĻ…āĻ¨ā§āϝ āĻŦā§āϰāĻžāĻžā§āĻšā§‡ āϜāϰ⧁āϰāĻŋ āĻ•āĻžāϜ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧋āĨ¤

Terminal
git switch main # bug fix āĻ•āϰ⧋ git add . git commit -m "Fix critical navigation bug" git push

Restore Stash

āϜāϰ⧁āϰāĻŋ āĻ•āĻžāϜ āĻļ⧇āώ āĻ•āϰ⧇ āφāĻŦāĻžāϰ āĻ¸ā§āĻŸā§āϝāĻžāĻļ āĻĨ⧇āϕ⧇ āφāϗ⧇āϰ āĻ•āĻžāĻœā§‡ āĻĢāĻŋāϰ⧇ āφāϏāĻžāϰ āύāĻŋ⧟āĻŽāĨ¤

Terminal
git switch feature/login # stash āĻĨ⧇āϕ⧇ āĻ•āĻžāϜ āĻĢāĻŋāϰāĻŋāϝāĻŧ⧇ āφāύ⧋ git stash pop

āϤ⧋āĻŽāĻžāϰ āφāϗ⧇āϰ āϏāĻŦ āĻ•āĻžāϜ āĻĢāĻŋāϰ⧇ āφāϏāĻŦ⧇ — āϝ⧇āύ āĻ•āĻŋāϛ⧁āχ āĻšāϝāĻŧāύāĻŋāĨ¤

Stash Operations

āĻ¸ā§āĻŸā§āϝāĻžāĻļ⧇ āϰāĻžāĻ–āĻž āĻ•āĻžāϜāϗ⧁āϞ⧋ āĻĻ⧇āĻ–āĻžāϰ āĻāĻŦāĻ‚ āĻŽā§āϝāĻžāύ⧇āϜ āĻ•āϰāĻžāϰ āĻĒā§āĻ°ā§Ÿā§‹āϜāĻ¨ā§€ā§Ÿ āĻ•āĻŽāĻžāĻ¨ā§āĻĄāϏāĻŽā§‚āĻšāĨ¤

Terminal
git stash list # āĻāĻ•āĻžāϧāĻŋāĻ• Stash āĻĻ⧇āĻ–ā§‹ git stash apply stash@{1} # Specific Stash Apply āĻ•āϰ⧋ git stash drop # āϏāĻŦāĻšā§‡āϝāĻŧ⧇ latest stash delete git stash clear # āϏāĻŦ stash clear āĻ•āϰ⧋

Team Workflow

āĻāĻ•āϟāĻŋ āĻĒā§āϰ⧋āĻĢ⧇āĻļāύāĻžāϞ āϟāĻŋāĻŽā§‡ āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ āϝ⧇āĻ­āĻžāĻŦ⧇ āĻŦā§āϰāĻžāĻžā§āϚ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻ•āĻžāϜ āĻ•āϰāĻž āĻšā§ŸāĨ¤

āĻāĻ–āύ āϏāĻŦ āĻāĻ•āϏāĻžāĻĨ⧇ āĻĻ⧇āĻ–āĻŋāĨ¤ āϧāϰ⧋ āϤ⧁āĻŽāĻŋ āĻāĻ•āϟāĻž team-āĻ āĻ•āĻžāϜ āĻ•āϰāĻ›āĨ¤

Terminal
# ā§§. āϏāĻ•āĻžāϞ⧇ āĻ•āĻžāϜ āĻļ⧁āϰ⧁ — latest āύāĻžāĻŽāĻžāĻ“ git switch main git pull # ⧍. āύāϤ⧁āύ feature-āĻāϰ āϜāĻ¨ā§āϝ branch āĻŦāĻžāύāĻžāĻ“ git switch -c feature/search-bar # ā§Š. āĻ•āĻžāϜ āĻ•āϰ⧋ git add . git commit -m "Add search bar UI to header" git add . git commit -m "Connect search bar to product API" # ā§Ē. āĻ•āĻžāϜ āĻļ⧇āώ — GitHub-āĻ push āĻ•āϰ⧋ git push -u origin feature/search-bar # ā§Ģ. āĻāĻ–āύ Pull Request āĻŦāĻžāύāĻžāĻŦ⧇ GitHub-āĻ # Teammate review āĻ•āϰāĻŦ⧇, approve āĻ•āϰāĻŦ⧇ # āϤāĻžāϰāĻĒāϰ main-āĻ merge āĻšāĻŦ⧇ # ā§Ŧ. Merge āĻšāĻ“āϝāĻŧāĻžāϰ āĻĒāϰ local cleanup git switch main git pull git branch -d feature/search-bar

Common Problems & Fixes

Problem: “Already up to date” āĻ•āĻŋāĻ¨ā§āϤ⧁ merge āĻšāĻšā§āϛ⧇ āύāĻžāĨ¤ āĻ•āĻžāϰāĻŖ: āϤ⧋āĻŽāĻžāϰ feature branch-āĻ main-āĻāϰ āϏāĻŦ commits āφāϛ⧇āĨ¤ git log --oneline āĻĻāĻŋāϝāĻŧ⧇ āĻĻ⧇āĻ–ā§‹āĨ¤

What’s Next?

Branch āĻāĻŦāĻ‚ merge āĻļ⧇āĻ–āĻž āĻšāϝāĻŧ⧇ āϗ⧇āϛ⧇āĨ¤ āĻāĻ–āύ āĻļāĻŋāĻ–āĻŦ⧇ GitHub-āĻāϰ āϏāĻžāĻĨ⧇ properly āĻ•āĻžāϜ āĻ•āϰāĻž — SSH, remote, Pull Request āϏāĻŦāĨ¤

→ GitHub Essentials

āϤ⧋āĻŽāĻžāϰ local Git āĻāĻŦāĻ‚ GitHub-āĻāϰ āĻŽāĻ§ā§āϝ⧇ bridge āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇, Pull Request āϕ⧀ āĻāĻŦāĻ‚ āϕ⧀āĻ­āĻžāĻŦ⧇ āĻ•āϰāϤ⧇ āĻšāϝāĻŧ — āϏāĻŦ āĻāĻ–āĻžāύ⧇āĨ¤

Search Keywords: create branch, switch branch, merge branch, delete branch, resolve merge conflicts, git stash

Last updated on