đ Fork āĻāĻŦāĻ Pull Request Workflow â
đ§ Fork āĻā§? â
Fork āĻšāϞ⧠GitHub-āĻ āĻ āύā§āϝ āĻāĻžāϰāĻ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ āĻāĻāĻāĻŋ āĻāĻĒāĻŋ āύāĻŋāĻā§āϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻā§ āύāĻŋā§ā§ āĻāϏāĻžāĨ¤ āĻāĻĒāύāĻŋ āĻāĻ āĻāĻĒāĻŋ-āϤ⧠āϝā§āĻā§āύ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āĻ āĻĨāĻ āĻŽā§āϞ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϰ āĻā§āύ⧠āĻā§āώāϤāĻŋ āĻšāĻŦā§ āύāĻžāĨ¤
â āĻāĻĒāύāĻŋ āϝāĻāύ āĻŽā§āϞ āĻĒā§āϰā§āĻā§āĻā§āĻā§ āϏāϰāĻžāϏāϰāĻŋ write access āĻĒāĻžāύ āύāĻž, āϤāĻāύ Fork āĻāϰ⧠āĻāĻžāĻ āĻāϰāϤ⧠āĻšā§āĨ¤
đ¯ Fork āĻāĻŦāĻ Pull Request āĻā§āύ āĻĒā§āϰā§ā§āĻāύ? â
āĻŦāĻŋāώ⧠| āĻāĻžāϰāĻŖ |
---|---|
āĻāĻĒāύāĻŋ contributor āύāύ | āĻŽā§āϞ āĻĒā§āϰā§āĻā§āĻā§āĻā§ āϏāϰāĻžāϏāϰāĻŋ push āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻž |
āĻāĻĒā§āύ āϏā§āϰā§āϏ āĻĒā§āϰāĻā§āĻā§āĻ | āĻ āύā§āĻā§āϰ āĻāĻžāĻ āĻāϞāĻžāĻĻāĻž āϰāĻžāĻāĻž āĻĻāϰāĻāĻžāϰ |
Code Review āĻĻāϰāĻāĻžāϰ | Pull Request āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϰāĻŋāĻāĻŋāĻ āϏāĻšāĻ |
āĻāύā§āύāϤ Collaboration | āϏāĻāϞ commit āĻāϞāĻžāĻĻāĻž āĻŦā§āϰāĻžāĻā§āĻā§ āĻĨāĻžāĻāĻŦā§ |
đ ī¸ Step-by-step: Fork āĻ Pull Request Workflow â
āϧāϰāĻŋ āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻāĻĒā§āύ āϏā§āϰā§āϏ Laravel āĻĒā§āϰāĻā§āĻā§āĻā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻāĻžāύāĨ¤
ā§§. đ GitHub āĻĨā§āĻā§ Fork āĻāϰā§āύ â
āϝ⧠āĻĒā§āϰā§āĻā§āĻā§āĻā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻāĻžāύ, GitHub āĻ āĻāĻŋā§ā§:
- "Fork" āĻŦāĻžāĻāύ⧠āĻā§āϞāĻŋāĻ āĻāϰā§āύ
- āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ GitHub āĻ ā§āϝāĻžāĻāĻžāĻāύā§āĻā§ āĻāĻĒāĻŋ āĻšā§ā§ āϝāĻžāĻŦā§
⧍. đģ Fork āĻāϰāĻž āĻĒā§āϰāĻā§āĻā§āĻ āĻā§āϞā§āύ āĻāϰā§āύ â
git clone https://github.com/your-username/project-name.git
cd project-name
git clone https://github.com/your-username/project-name.git
cd project-name
ā§Š. đ āĻŽā§āϞ āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋ āϝā§āĻ āĻāϰā§āύ (remote upstream) â
git remote add upstream https://github.com/original-owner/project-name.git
git remote add upstream https://github.com/original-owner/project-name.git
â āĻāĻāύ āĻāĻĒāύāĻžāϰ āĻāĻžāĻā§ āĻĻā§āĻāĻāĻŋ remote āĻĨāĻžāĻāĻŦā§:
origin
â āĻāĻĒāύāĻžāϰ Forkupstream
â āĻŽā§āϞ āĻĒā§āϰāĻā§āĻā§āĻ
ā§Ē. đŋ āύāϤā§āύ āĻŦā§āϰāĻžāĻā§āĻ āϤā§āϰāĻŋ āĻāϰā§āύ â
git checkout -b feature/add-contact-form
git checkout -b feature/add-contact-form
ā§Ģ. đ§âđģ āĻĢāĻŋāĻāĻžāϰ āĻŦāĻž āĻĢāĻŋāĻā§āϏ āϝā§āĻ āĻāϰā§āύ â
ContactController.php
āϝā§āĻ āĻāϰā§āύcontact.blade.php
āϤā§āϰāĻŋ āĻāϰā§āύ
git add .
git commit -m "Add contact form with validation"
git add .
git commit -m "Add contact form with validation"
ā§Ŧ. đ āύāĻŋāĻā§āϰ Fork āĻ Push āĻāϰā§āύ â
git push origin feature/add-contact-form
git push origin feature/add-contact-form
ā§. đ Pull Request āϤā§āϰāĻŋ āĻāϰā§āύ â
GitHub āĻ āϝāĻžāύ â āĻāĻĒāύāĻžāϰ Fork â âCompare & Pull Requestâ āĻŦāĻžāĻāύ⧠āĻā§āϞāĻŋāĻ āĻāϰā§āύ:
- base: original/master
- compare: your-branch-name
đ āĻāĻāĻāĻŋ āϏā§āύā§āĻĻāϰ āĻŦāĻŋāĻŦāϰāĻŖ āϞāĻŋāĻā§āύ:
This PR adds a new contact form with validation and stores messages to database.
đ āĻāĻĻāĻžāĻšāϰāĻŖ ⧍: āĻŦāĻžāĻ āĻĢāĻŋāĻā§āϏ â
git checkout -b fix/typo-in-readme
# README.md āĻĢāĻŋāĻā§āϏ āĻāϰā§āύ
git commit -am "Fix typo in README"
git push origin fix/typo-in-readme
# PR āϤā§āϰāĻŋ āĻāϰā§āύ
git checkout -b fix/typo-in-readme
# README.md āĻĢāĻŋāĻā§āϏ āĻāϰā§āύ
git commit -am "Fix typo in README"
git push origin fix/typo-in-readme
# PR āϤā§āϰāĻŋ āĻāϰā§āύ
đ Upstream āĻĨā§āĻā§ Sync āϰāĻžāĻāĻžāϰ āύāĻŋā§āĻŽ â
āĻŽāĻžāĻā§ āĻŽāĻžāĻā§ āĻŽā§āϞ āĻĒā§āϰāĻā§āĻā§āĻā§ āύāϤā§āύ commit āĻāϏāĻŦā§āĨ¤ āϏā§āĻā§āϞ⧠āĻāύāϤā§:
git checkout main
git fetch upstream
git merge upstream/main
git push origin main
git checkout main
git fetch upstream
git merge upstream/main
git push origin main
đ§ āĻāĻāύ Fork āĻĻāϰāĻāĻžāϰ? â
āĻā§āϏ | Fork āϞāĻžāĻāĻŦā§ |
---|---|
āĻāĻĒāύāĻŋ core āĻāĻŋāĻŽā§āϰ āĻŦāĻžāĻāϰ⧠| â āĻĻāϰāĻāĻžāϰ |
āĻĒā§āϰāĻžāĻāĻā§āĻ āĻāĻŋāĻŽ āĻĒā§āϰāĻā§āĻā§āĻ | â āĻĻāϰāĻāĻžāϰ āύā§āĻ (āĻŦā§āϰāĻžāĻā§āĻ āĻĻāĻŋā§ā§āĻ āϏāĻŽā§āĻāĻŦ) |
āĻāĻĒā§āύ āϏā§āϰā§āϏ⧠āĻ āĻŦāĻĻāĻžāύ āϰāĻžāĻāϤ⧠āĻāĻžāύ | â āĻā§āĻŦ āĻĻāϰāĻāĻžāϰ |
â Best Practices â
- meaningful āĻŦā§āϰāĻžāĻā§āĻ āύāĻžāĻŽ āĻĻāĻŋāύ (āϝā§āĻŽāύ:
feature/add-login
,fix/button-bug
) - āĻā§āĻ āĻā§āĻ PR āĻĒāĻžāĻ āĻžāύ
- Pull Request āĻ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āϞāĻŋāĻā§āύ
- commit message āĻĒāϰāĻŋāώā§āĻāĻžāϰ āĻĻāĻŋāύ
- āĻ āύā§āϝ āĻāĻžāϰ⧠PR āĻ āϰāĻŋāĻāĻŋāĻ āĻāϰā§āύ
đ Real-life Scenario: Contributing to Laravel â
āϧāϰāĻŋ āĻāĻĒāύāĻŋ Laravel framework-āĻ āĻāĻāĻāĻž āĻā§āĻ āĻŦāĻžāĻ āĻĢāĻŋāĻā§āϏ āĻāϰāϤ⧠āĻāĻžāύ:
- Fork āĻāϰā§āύ: https://github.com/laravel/framework
- āĻā§āϞā§āύ āĻāϰā§āύ: āύāĻŋāĻā§āϰ GitHub āĻĨā§āĻā§
- fix/add āĻāϰā§āύ â commit
- PR āϤā§āϰāĻŋ āĻāϰā§āύ: āĻŽā§āϞ Laravel āϰāĻŋāĻĒā§āĻāĻŋāĻāϰāĻŋāϤā§
đ§Ē Bonus: CLI āĻĻāĻŋā§ā§ PR āϤā§āϰāĻŋ (GitHub CLI) â
gh pr create --base main --head feature/add-stats --title "Add Stats Section" --body "Adds a new stats section to homepage"
gh pr create --base main --head feature/add-stats --title "Add Stats Section" --body "Adds a new stats section to homepage"
đ¤ Pull Request Accept āύāĻž āĻšāϞā§? â
- āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻŦāϞāϞ⧠â āύāĻŋāĻā§āϰ āĻŦā§āϰāĻžāĻā§āĻā§ update āĻāϰ⧠āĻāĻŦāĻžāϰ push āĻāϰā§āύ
- āĻāϞā§āĻāύāĻž āĻāϰā§āύ â comment āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§
- PR āĻŦāύā§āϧ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āĻāĻŦāĻžāϰ reopen āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ
đ¯ āĻāĻĒāϏāĻāĻšāĻžāϰ â
Fork āĻāĻŦāĻ Pull Request āĻšāϞ⧠āĻāĻĒā§āύ āϏā§āϰā§āϏ āĻāύāĻā§āϰāĻŋāĻŦāĻŋāĻāĻļāύā§āϰ āĻŽā§āϞ āĻāĻžāĻŦāĻŋāĻāĻžāĻ āĻŋāĨ¤ āĻāĻāĻŋ āĻāĻĒāύāĻžāϰ āĻāĻžāĻāĻā§ āĻāϞāĻžāĻĻāĻž āĻāϰ⧠āϰāĻžāĻā§, āϰāĻŋāĻāĻŋāĻ āĻāĻŦāĻ āĻā§āϏā§āĻā§āϰ āϏā§āϝā§āĻ āĻĻā§ā§ āĻāĻŦāĻ āĻŽā§āϞ āĻĒā§āϰāĻā§āĻā§āĻā§ āĻ āĻŦāĻĻāĻžāύ āϰāĻžāĻāϤ⧠āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āĨ¤