Pull Request និងលំហូរការងារជាក្រុម

មាតិកា

  1. ហេតុអ្វីមិនគ្រាន់តែ Push ទៅ main?
  2. GitHub Flow
  3. ចាប់ផ្តើមដោយ Issue មួយ
  4. Push Feature Branch មួយ
  5. បើក Pull Request មួយ
  6. ការ Review Pull Request
  7. Merge ហើយសម្អាត
  8. ធ្វើការជាមួយសមាជិកក្រុម
  9. Fork៖ ការចូលរួមក្នុង Project របស់អ្នកដទៃ
  10. សាកល្បងដោយខ្លួនឯង

1. ហេតុអ្វីមិនគ្រាន់តែ Push ទៅ main?

រហូតមកដល់ពេលនេះ អ្នកបាន push ដោយផ្ទាល់ទៅ main។ នៅក្នុងក្រុមមួយ នោះមានហានិភ័យ៖

  • កំហុសមួយចូលទៅក្នុងកំណែដែលគ្រប់គ្នាប្រើភ្លាម។
  • គ្មាននរណាម្នាក់ផ្សេងទៀតឃើញការផ្លាស់ប្តូរនោះទេ រហូតដល់វាចូលទៅរួចហើយ។
  • គ្មានកន្លែងណាសម្រាប់ពិភាក្សាថា គួរ ធ្វើការផ្លាស់ប្តូរ ឬអត់ ឬត្រូវធ្វើ ដោយរបៀបណា ទេ។

pull request (PR) ដោះស្រាយបញ្ហាទាំងបីនេះ។ ជំនួសឲ្យការ push ទៅ main អ្នក push branch មួយ ហើយស្នើថា៖ «សូមពិនិត្យមើលការផ្លាស់ប្តូរទាំងនេះ ហើយ merge វាចូលទៅក្នុង main»។ សមាជិកក្រុមអាន diff ទុក comment ហើយ approve វា។ មានតែពេលនោះទេ ទើបវាត្រូវបាន merge។

នៅស្ទើរតែគ្រប់ក្រុមអាជីព ការផ្លាស់ប្តូរ ទាំងអស់ ទៅ main ឆ្លងកាត់ pull request — សូម្បីតែការផ្លាស់ប្តូរតូចៗ សូម្បីតែពីអ្នកអភិវឌ្ឍន៍ជាន់ខ្ពស់ក៏ដោយ។

2. GitHub Flow

នេះគឺជា workflow ទាំងមូលដែលអ្នកនឹងអនុវត្តនៅក្នុងជំពូកនេះ។ វាត្រូវបានគេហៅថា GitHub flow ហើយវាជារបៀបធ្វើការទូទៅបំផុតរបស់ក្រុមនានា៖

1. Issue        describe the work          (on GitHub)
2. Branch       git switch -c add-projects  (on your computer)
3. Commit       small, focused commits
4. Push         git push -u origin add-projects
5. Pull request ask for review              (on GitHub)
6. Review       discuss, fix, push again
7. Merge        into main                   (on GitHub)
8. Clean up     pull main, delete branch    (on your computer)

អ្នកស្គាល់ជំហានទី 2–4 រួចហើយ។ ផ្នែកថ្មីៗកើតឡើងនៅលើ GitHub។

3. ចាប់ផ្តើមដោយ Issue មួយ

issue គឺជាកិច្ចការ របាយការណ៍ bug ឬគំនិតមួយ ដែលត្រូវបានសរសេរទុកនៅលើ GitHub ដើម្បីកុំឲ្យភ្លេច។ នៅក្នុង repository my-site របស់អ្នក បើក tab Issues → New issue៖

  • Title៖ Add a projects section to the home page
  • Description៖ List the things I've built, starting with this site.

ចុច Create។ GitHub ផ្តល់លេខឲ្យវា — #1 សម្រាប់ issue ទីមួយរបស់អ្នក។ Issue គឺជាបញ្ជីកិច្ចការត្រូវធ្វើ (to-do list) របស់ project អ្នក ហើយនៅក្នុងក្រុម វាជារបៀបដែលការងារត្រូវបានចាត់តាំង និងពិភាក្សា មុនពេលនរណាម្នាក់សរសេរកូដ។

4. Push Feature Branch មួយ

នៅក្នុង ~/my-site ចាប់ផ្តើមពី main ដែលទាន់សម័យ ហើយបង្កើត branch មួយសម្រាប់ issue នោះ៖

cd ~/my-site
git switch main
git pull
git switch -c add-projects

បន្ថែមផ្នែក projects មួយទៅក្នុង index.html នៅពីលើ link About៖

    <h2>Projects</h2>
    <ul>
      <li>my-site — this website, built with Git and GitHub</li>
    </ul>

Commit បន្ទាប់មក push branch នោះទៅ GitHub៖

git commit -am "Add projects section to home page"
git push -u origin add-projects
...
remote: Create a pull request for 'add-projects' on GitHub by visiting:
remote:      https://github.com/dara-sok/my-site/pull/new/add-projects
remote:
To https://github.com/dara-sok/my-site.git
 * [new branch]      add-projects -> add-projects
branch 'add-projects' set up to track 'origin/add-projects'.

ឥឡូវនេះ GitHub មាន branch នោះហើយ។ main នៅលើ GitHub មិនបានផ្លាស់ប្តូរអ្វីសោះ។

5. បើក Pull Request មួយ

បើក repository របស់អ្នកនៅលើ GitHub។ បដាពណ៌លឿងមួយលេចឡើង៖ add-projects had recent pushes ជាមួយប៊ូតុង Compare & pull request។ ចុចវា។ (អ្នកក៏អាចប្រើ link ពីលទ្ធផលនៃការ push ឬ tab Pull requests → New pull request ផងដែរ។)

ពិនិត្យផ្នែកខាងលើនៃ form៖ base: main ← compare: add-projects។ វាអានថា «merge add-projects ចូលទៅក្នុង main»។

បំពេញ៖

  • Title៖ សេចក្តីសង្ខេបច្បាស់លាស់មួយ ដូច commit message ដែរ — Add projects section to home page
  • Description៖ អ្វីដែលការផ្លាស់ប្តូរនេះធ្វើ និងហេតុអ្វី បូករួមទាំងអ្វីដែលអ្នក review គួរពិនិត្យ។ បញ្ចប់វាដោយ៖
Closes #1

ការសរសេរ Closes #1 ភ្ជាប់ PR ទៅនឹង issue។ នៅពេល PR ត្រូវបាន merge GitHub បិទ issue នោះដោយស្វ័យប្រវត្តិ។

ចុច Create pull request។ PR របស់អ្នកមាន tab បីដែលគួរស្គាល់៖

  • Conversation — description, comment និងស្ថានភាព
  • Commits — commit ទាំងឡាយនៅលើ branch
  • Files changed — diff ពេញលេញ ដូចគ្នានឹងអ្វីដែល git diff បង្ហាញ

PR មួយដើរតាម branch របស់វា។ បើអ្នក push commit បន្ថែមទៅ add-projects ពួកវាលេចឡើងនៅក្នុង PR ដោយស្វ័យប្រវត្តិ — នោះហើយជារបៀបដែលអ្នកឆ្លើយតបនឹងមតិ review។

6. ការ Review Pull Request

ការ review គឺជាកន្លែងដែលក្រុមរកឃើញ bug និងចែករំលែកចំណេះដឹង។ បើក Files changed៖

  • ដាក់ mouse លើបន្ទាត់ណាមួយ ហើយចុចសញ្ញា + ពណ៌ខៀវ ដើម្បីទុក comment លើបន្ទាត់នោះផ្ទាល់ — សំណួរ សំណូមពរ ឬអក្ខរាវិរុទ្ធខុស។
  • នៅពេលអ្នករួចរាល់ ចុច Review changes ហើយជ្រើសរើស៖
    • Comment — មតិទូទៅ គ្មានការសម្រេចចិត្ត
    • Approve — មើលទៅល្អ រួចរាល់សម្រាប់ merge
    • Request changes — ត្រូវការកែមុនពេល merge

GitHub មិនអនុញ្ញាតឲ្យអ្នក approve PR ផ្ទាល់ខ្លួនទេ ដូច្នេះនៅពេលអ្នកធ្វើការម្នាក់ឯង គ្រាន់តែទុក comment ឲ្យខ្លួនឯងដើម្បីសាកល្បង។ បន្ទាប់មកឆ្លើយតបនឹងវា ដូចអ្នកសរសេរពិតប្រាកដម្នាក់នឹងធ្វើ៖ កែនៅលើកុំព្យូទ័ររបស់អ្នក commit ហើយ git push។ មើល commit ថ្មីលេចឡើងនៅក្នុង PR។

ទម្លាប់ review ល្អៗ សម្រាប់ភាគីទាំងពីរ៖

  • រក្សា PR ឲ្យតូច។ PR 50 បន្ទាត់ទទួលបានការ review យ៉ាងយកចិត្តទុកដាក់ ចំណែក PR 2,000 បន្ទាត់ទទួលបានត្រឹមតែ «looks good to me»។
  • Review កូដ មិនមែនមនុស្សទេ។ «កូដនេះអាចខូចនៅលើទូរសព្ទ — ចុះបើ…?» ជាជាង «អ្នកធ្វើខុសហើយ»។
  • ពន្យល់ថា ហេតុអ្វី។ នៅក្នុង description ក្នុងនាមជាអ្នកសរសេរ និងនៅក្នុង comment ក្នុងនាមជាអ្នក review។
  • និយាយពីអ្វីដែលល្អផងដែរ។ ការ review មិនមែនសម្រាប់តែបញ្ហាប៉ុណ្ណោះទេ។

7. Merge ហើយសម្អាត

នៅពេល PR ត្រូវបាន approve (ឬសម្រាប់ពេលនេះ នៅពេលអ្នកពេញចិត្តនឹងវា) ចុច Merge pull request → Confirm merge។

ប៊ូតុងនោះមាន dropdown ដែលមានជម្រើសបី។ Create a merge commit គឺជាជម្រើសលំនាំដើម ហើយដំណើរការដូចគ្នាបេះបិទនឹងការ merge ដែលអ្នកបានធ្វើនៅក្នុង terminal — ប្រើវាសម្រាប់ស៊េរីនេះ។ អ្នកក៏នឹងឃើញ Squash and merge (បញ្ចូល commit ទាំងអស់របស់ branch ទៅជាមួយ) និង Rebase and merge ផងដែរ។ ក្រុមជាច្រើនចូលចិត្តជម្រើសមួយក្នុងចំណោមនោះ ហើយពួកគេនឹងប្រាប់អ្នកថាមួយណា។

បន្ទាប់ពី merge៖

  • Issue #1 បិទដោយស្វ័យប្រវត្តិ អរគុណដល់ Closes #1។
  • GitHub ផ្តល់ប៊ូតុង Delete branch។ ចុចវា — ការងាររបស់ branch នោះនៅក្នុង main ហើយឥឡូវនេះ។

កុំព្យូទ័ររបស់អ្នកមិនទាន់ដឹងអំពីរឿងទាំងនេះទេ។ សម្អាតនៅលើកុំព្យូទ័ររបស់អ្នក៖

git switch main
git pull
git branch -d add-projects
git fetch --prune

git pull ទាញយកការ merge មក។ git branch -d លុប branch នៅលើកុំព្យូទ័ររបស់អ្នក។ git fetch --prune លុប origin/add-projects ដែលជាការចងចាំដែលនៅសល់នៃ branch ដែលអ្នកបានលុបនៅលើ GitHub។

នោះគឺជាមួយជុំពេញលេញនៃ GitHub flow។ នៅក្នុងក្រុម អ្នកនឹងធ្វើបែបនេះរាល់ថ្ងៃ។

8. ធ្វើការជាមួយសមាជិកក្រុម

ដើម្បីអនុញ្ញាតឲ្យមិត្តម្នាក់ push branch ទៅ repository របស់អ្នក ចូលទៅកាន់ Settings → Collaborators → Add people ហើយអញ្ជើញពួកគេតាម username។ នៅពេលពួកគេទទួលយក ពួកគេអាច clone repository, push branch, បើក PR និង review PR របស់អ្នកបាន។

ជាធម្មតា ក្រុមក៏ ការពារ main ផងដែរ៖ នៅក្រោម Settings → Rules (ឬ Branches នៅលើគម្រោងខ្លះ) អ្នកអាចតម្រូវឲ្យរាល់ការផ្លាស់ប្តូរទៅ main ត្រូវតែឆ្លងកាត់ pull request ដែលមានការ approve យ៉ាងហោចណាស់មួយ។ នោះប្រែក្លាយ «សូមកុំ push ទៅ main» ពីសំណើដោយគួរសម ទៅជាច្បាប់មួយ។

បើអ្នកមាន GitHub CLI ពីជំពូកទី 8 command មួយចំនួនជួយសន្សំការធ្វើដំណើរទៅ browser៖

gh pr create        # open a PR for the current branch
gh pr list          # list open PRs
gh pr checkout 12   # download PR #12 to test it locally
gh issue list       # list open issues

9. Fork៖ ការចូលរួមក្នុង Project របស់អ្នកដទៃ

អ្នកមិនអាច push branch ទៅ repository ដែលអ្នកគ្មានសិទ្ធិចូលប្រើបានទេ — ឧទាហរណ៍ project open-source មួយ។ ជំនួសមកវិញ អ្នក fork វា៖ ចុច Fork នៅលើទំព័ររបស់ project ហើយ GitHub បង្កើតច្បាប់ចម្លងពេញលេញមួយនៅក្រោម account ផ្ទាល់ខ្លួនរបស់អ្នក។

បន្ទាប់មក លំហូរការងារស្ទើរតែដូចគ្នា៖

  1. Fork project នោះនៅលើ GitHub។
  2. Clone fork របស់អ្នក៖ git clone https://github.com/<you>/<project>.git
  3. Branch, commit ហើយ push ទៅ fork របស់អ្នក ដូចធម្មតា។
  4. បើក pull request ពី branch នៃ fork របស់អ្នក ទៅកាន់ project ដើម។ GitHub ផ្តល់ជម្រើសនេះដោយស្វ័យប្រវត្តិបន្ទាប់ពីអ្នក push។
  5. អ្នកថែទាំ (maintainer) របស់ project នោះ review វា ហើយបើពួកគេចូលចិត្ត ពួកគេ merge វា។

នោះហើយជារបៀបដែលនរណាម្នាក់នៅលើពិភពលោកអាចចូលរួមក្នុង project ដូចជា Git, Next.js ឬ VS Code។ Project ជាច្រើនដាក់ស្លាកលើកិច្ចការងាយៗសម្រាប់អ្នកចាប់ផ្តើមថា good first issue — ជាវិធីដ៏ល្អមួយដើម្បីធ្វើការចូលរួមពិតប្រាកដលើកដំបូងរបស់អ្នក។

10. សាកល្បងដោយខ្លួនឯង

  1. បើក issue មួយ នៅក្នុង my-site សម្រាប់ផ្នែក projects។
  2. ធ្វើ GitHub flow ពេញលេញ៖ branch, commit, push បើក PR មួយដែលសរសេរថា Closes #1 merge វា លុប branch ហើយសម្អាតនៅលើកុំព្យូទ័ររបស់អ្នក។ ពិនិត្យមើលថា issue បានបិទដោយខ្លួនឯង។
  3. ឆ្លើយតបនឹងការ review។ បើក PR ទីពីរ (ឧទាហរណ៍ បន្ថែម link Contact ទៅទំព័រដើម)។ ទុក comment លើបន្ទាត់មួយ push commit កែមួយ ហើយមើល PR ធ្វើបច្ចុប្បន្នភាព មុនពេល merge។
  4. អញ្ជើញមិត្តម្នាក់ ជា collaborator ហើយ review PR របស់គ្នាទៅវិញទៅមក។
  5. មើល PR របស់ project ពិតមួយ។ បើក github.com/vercel/next.js/pulls បើក pull request ណាមួយ ហើយអាន tab Conversation និង Files changed។ ក្រុមពិតៗធ្វើការដូចគ្នាបេះបិទនឹងអ្វីដែលអ្នកទើបតែបានធ្វើ។

បន្ទាប់មកទៀត តោះដាក់អ្វីៗទាំងអស់បញ្ចូលគ្នា ហើយបោះពុម្ពផ្សាយ my-site នៅលើអ៊ីនធឺណិត។

ទិញកាហ្វេជូនខ្ញុំ

ចូលចិត្តមេរៀននេះមែនទេ? សូមពិចារណាទិញកាហ្វេជូនខ្ញុំមួយកែវ ដើម្បីគាំទ្រការបង្កើតមាតិកាឥតគិតថ្លៃបន្ថែមទៀត!