đŋ āĻĢāĻŋāĻāĻžāϰ āĻŦā§āϰāĻžāĻā§āĻ āĻā§āĻžāϰā§āĻāĻĢā§āϞ⧠â
đ āĻĢāĻŋāĻāĻžāϰ āĻŦā§āϰāĻžāĻā§āĻ āĻā§āĻžāϰā§āĻāĻĢā§āϞ⧠āĻā§? â
Feature Branch Workflow āĻšāϞ āĻāĻŽāύ āĻāĻāĻāĻŋ Git workflow āϝā§āĻāĻžāύ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āύāϤā§āύ āĻĢāĻŋāĻāĻžāϰ/āĻŦāĻžāĻ āĻĢāĻŋāĻā§āϏ/āĻāĻžāϏā§āĻā§āϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āĻāĻāĻāĻŋ āĻŦā§āϰāĻžāĻā§āĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻšā§āĨ¤ āĻŽā§āϞ āĻŦā§āϰāĻžāĻā§āĻā§ (main
/master
) āϏāϰāĻžāϏāϰāĻŋ āĻāĻžāĻ āύāĻž āĻāϰā§, āĻāĻ āĻāϞāĻžāĻĻāĻž āĻŦā§āϰāĻžāĻā§āĻā§ āĻāĻžāĻ āĻāϰ⧠āĻļā§āώ⧠Merge āĻāϰāĻž āĻšā§āĨ¤
āĻāĻāĻŋ āĻā§āϞāĻŋāύ āĻā§āĻĄāĻŦā§āϏ, āϏāĻšāĻ āĻāĻŋāĻŽāĻā§āĻžāϰā§āĻ, āĻ āĻĒāϰā§āĻā§āώāĻžāϰ āϏā§āĻŦāĻŋāϧāĻž āĻĻā§ā§āĨ¤
đ¯ āĻā§āύ Feature Branch Workflow āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āύ? â
- ⨠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĢāĻŋāĻāĻžāϰ āĻāϞāĻžāĻĻāĻž āĻĨāĻžāĻāĻŦā§
- đ¤ āĻāĻŋāĻŽ āĻŽā§āĻŽā§āĻŦāĻžāϰāϰāĻž āĻāĻā§ āĻ āύā§āϝā§āϰ āĻāĻžāĻā§āϰ āĻāĻĒāϰ āĻĒā§āϰāĻāĻžāĻŦ āĻĢā§āϞāĻŦā§ āύāĻž
- đ§Ē CI/CD āĻŦāĻž QA-āϤ⧠āĻāϞāĻžāĻĻāĻž āĻĢāĻŋāĻāĻžāϰ āĻā§āϏā§āĻ āĻāϰāĻž āϏāĻšāĻ āĻšā§
- đ āϏāĻšāĻā§ āĻā§āύ⧠āĻĢāĻŋāĻāĻžāϰ āĻŦāĻžāϤāĻŋāϞ āĻāϰāĻž āĻŦāĻž āϰā§āϞāĻŦā§āϝāĻžāĻ āĻāϰāĻž āϝāĻžā§
đ ī¸ Step by Step āĻŦāĻžāϏā§āϤāĻŦ āĻāĻĻāĻžāĻšāϰāĻŖ â
āϧāϰāĻŋ āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ Laravel āĻĒā§āϰāĻā§āĻā§āĻā§ "User Profile Edit" āĻĢāĻŋāĻāĻžāϰ āϝā§āĻ āĻāϰāĻā§āύāĨ¤
ā§§. â āĻŽā§āϞ āĻŦā§āϰāĻžāĻā§āĻā§ āĻĨāĻžāĻā§āύ (main/master) â
git checkout main
git pull origin main
git checkout main
git pull origin main
⧍. đŋ āύāϤā§āύ āĻĢāĻŋāĻāĻžāϰā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻŦā§āϰāĻžāĻā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ â
git checkout -b feature/user-profile-edit
git checkout -b feature/user-profile-edit
ā§Š. âī¸ āĻāĻžāĻ āĻāϰā§āύ â
UserController.php
āĻĢāĻžāĻāϞ⧠āĻā§āĻĄ āϞāĻŋāĻā§āύedit.blade.php
āĻĢāĻžāĻāϞ āϤā§āϰāĻŋ āĻāϰā§āύroutes/web.php
āĻ route āϝā§āĻā§āϤ āĻāϰā§āύ
Route::get('/profile/edit', [UserController::class, 'edit']);
Route::get('/profile/edit', [UserController::class, 'edit']);
ā§Ē. đĻ āĻāĻžāĻ āĻļā§āώ āĻšāϞ⧠Commit āĻāϰā§āύ â
git add .
git commit -m "Add user profile edit page"
git add .
git commit -m "Add user profile edit page"
ā§Ģ. đ Push āĻāϰā§āύ āϰāĻŋāĻŽā§āĻā§ â
git push origin feature/user-profile-edit
git push origin feature/user-profile-edit
ā§Ŧ. đ§Ē GitHub āĻ āĻāĻŋā§ā§ Pull Request (PR) āĻā§āϞā§āύ â
base
: maincompare
: feature/user-profile-edit
ā§. â āĻāĻŋāĻŽāĻŽā§āĻ āϰāĻŋāĻāĻŋāĻ āĻāϰāĻŦā§ â Merge āĻāϰāϞ⧠main āĻ āϝāĻžāĻŦā§ â
đ§Ē āĻāϰāĻ āĻāĻĻāĻžāĻšāϰāĻŖ â
āĻāĻĻāĻžāĻšāϰāĻŖ ā§§: Bug fix āĻŦā§āϰāĻžāĻā§āĻ â
git checkout -b fix/login-error
# āĻāĻžāĻ āĻāϰā§āύ
git commit -am "Fix login redirect issue"
git push origin fix/login-error
git checkout -b fix/login-error
# āĻāĻžāĻ āĻāϰā§āύ
git commit -am "Fix login redirect issue"
git push origin fix/login-error
āĻāĻĻāĻžāĻšāϰāĻŖ ⧍: āύāϤā§āύ API āϝā§āĻā§āϤ āĻāϰāĻžāϰ āĻāĻžāĻ â
git checkout -b feature/add-payment-api
# āĻāĻžāĻ āĻāϰā§āύ
git commit -am "Add payment gateway API integration"
git push origin feature/add-payment-api
git checkout -b feature/add-payment-api
# āĻāĻžāĻ āĻāϰā§āύ
git commit -am "Add payment gateway API integration"
git push origin feature/add-payment-api
đ Merge āĻŦāĻž Rebase? â
PR Merge āĻāϰāϞ⧠āĻāĻŽāĻŋāĻ āĻšāĻŋāϏā§āĻā§āϰāĻŋ āĻĨāĻžāĻāĻŦā§āĨ¤ Rebase āĻāϰāϞ⧠āĻšāĻŋāϏā§āĻā§āϰāĻŋ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻĨāĻžāĻāĻŦā§ â āĻāĻŋāύā§āϤ⧠āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻšāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻā§āĻ āĻāĻŋāĻŽā§ merge
āĻ
āύā§āĻ āϏāĻšāĻāĨ¤ āĻŦā§ āĻāĻŋāĻŽā§ rebase
āĻāϰāϞ⧠āĻāϤāĻŋāĻšāĻžāϏ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻšā§āĨ¤
đ§Š Branch Naming Convention â
āĻāĻžāĻā§āϰ āϧāϰāύ | āĻŦā§āϰāĻžāĻā§āĻ āύāĻžāĻŽā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ |
---|---|
āĻĢāĻŋāĻāĻžāϰ | feature/user-auth |
āĻŦāĻžāĻ āĻĢāĻŋāĻā§āϏ | fix/cart-total |
āĻĄāĻā§āĻŽā§āύā§āĻā§āĻļāύ | docs/api-endpoints |
āϰāĻŋāĻĢā§āϝāĻžāĻā§āĻāϰ | refactor/product-service |
đ§ Bonus: Remote Collaborator Workflow â
āϧāϰāĻŋ āĻĻā§āĻāĻāύ āĻāĻāĻ āĻĢāĻŋāĻāĻžāϰ⧠āĻāĻžāĻ āĻāϰāĻā§āύ:
dev1
âfeature/user-profile-edit
dev2
â āĻāĻāĻ āĻŦā§āϰāĻžāĻā§āĻā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻāĻžā§
git pull origin feature/user-profile-edit
# dev2 āĻāĻžāĻ āĻāϰā§
git push origin feature/user-profile-edit
git pull origin feature/user-profile-edit
# dev2 āĻāĻžāĻ āĻāϰā§
git push origin feature/user-profile-edit
âĄī¸ āĻāĻ āĻā§āώā§āϤā§āϰ⧠āĻā§āĻĄ āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻšāϤ⧠āĻĒāĻžāϰā§, āϤāĻžāĻ āϏā§āĻā§āϰāĻžāĻŽ āĻāĻŋāĻŽā§ āĻāĻžāĻ āĻāϰ⧠āĻāĻžāĻ āĻāϰāĻžāĻ āĻāĻžāϞā§āĨ¤
đ āϏāĻžāĻŦāϧāĻžāύāϤāĻž â
āĻā§āϞ āĻāĻžāĻ | āϏāĻŽāϏā§āϝāĻž |
---|---|
main-āĻ āϏāϰāĻžāϏāϰāĻŋ āĻāĻžāĻ | production code āύāώā§āĻ āĻšāϤ⧠āĻĒāĻžāϰ⧠|
āĻ āύā§āĻāĻĻāĻŋāύ merge āύāĻž āĻāϰāĻž | āĻāύāĻĢā§āϞāĻŋāĻā§āĻ āĻāĻŽā§ āϝāĻžā§ |
commit message āĻ āϏā§āĻĒāώā§āĻ | āĻŦā§āĻāϤ⧠āϏāĻŽāϏā§āϝāĻž āĻšā§ āĻā§ āĻā§ āĻāϰā§āĻā§ |
â āϏā§āϰāĻž āĻ āύā§āĻļā§āϞāύ (Best Practices) â
- āĻā§āĻ āĻā§āĻ feature āĻŦā§āϰāĻžāĻā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ
- āĻĒā§āϰāϤāĻŋāĻĻāĻŋāύ main āĻŦā§āϰāĻžāĻā§āĻ āĻĨā§āĻā§ pull āĻāϰā§āύ
- meaningful āĻŦā§āϰāĻžāĻā§āĻ āύāĻžāĻŽ āĻĻāĻŋāύ
- āĻĢāĻŋāĻāĻžāϰ āĻļā§āώ⧠PR āĻĻāĻŋāύ
- merge āĻāϰāĻžāϰ āĻāĻā§ āĻā§āϏā§āĻ āĻāϰ⧠āύāĻŋāύ
đ§ Feature Branch Workflow with CI/CD â
āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĢāĻŋāĻāĻžāϰ āĻŦā§āϰāĻžāĻā§āĻā§āĻ automatic test run āĻāϰāĻž āϝāĻžā§ GitHub Actions āĻŦāĻž GitLab CI āĻĻāĻŋā§ā§āĨ¤ āĻāϤ⧠āĻĢāĻŋāĻāĻžāϰ merge āĻšāĻā§āĻžāϰ āĻāĻā§ āϏāĻŽāϏā§āϝāĻž āϧāϰāĻž āĻĒā§ā§āĨ¤
đ GitHub Example Flow â
feature/chat-box
â push āĻāϰāϞā§āύ- GitHub āĻ PR āϤā§āϰāĻŋ āĻāϰāϞā§āύ
- CI passed â
- Reviewer Approve āĻĻāĻŋāϞā§
- Merge to main đ
- Deployment triggered đ
đĻ āĻāĻĒāϏāĻāĻšāĻžāϰ â
Feature Branch Workflow āĻā§āĻŦāĻ āĻāĻžāϰā§āϝāĻāϰ āĻāĻāĻāĻŋ Git āĻā§āĻļāϞ, āϝāĻž modern āϏāĻĢāĻāĻā§ā§āϝāĻžāϰ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻā§ āĻĒā§āϰāĻžā§ āϏāĻŦ āĻāĻŋāĻŽ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻļā§āϧ⧠āĻāĻŋāĻŽāĻā§āĻžāϰā§āĻ āϏāĻšāĻ āĻāϰ⧠āύāĻž, āĻŦāϰāĻ production-āĻ code āύāĻŋā§ā§ āϝāĻžāĻā§āĻžāϰ āĻāĻā§ āĻŦāĻŋāĻāĻŋāύā§āύ layer-āĻ āĻā§āϏā§āĻ āĻ āϰāĻŋāĻāĻŋāĻā§ā§āϰ āϏā§āϝā§āĻ āĻāϰ⧠āĻĻā§ā§āĨ¤