តើ Version Control ជាអ្វី?

មាតិកា

  1. បញ្ហា final_v2_REAL
  2. Snapshot មិនមែនជាការចម្លងទេ
  3. អ្វីដែល Version Control ផ្តល់ឲ្យអ្នក
  4. Git៖ ឧបករណ៍
  5. GitHub៖ គេហទំព័រ
  6. ពាក្យដែលអ្នកនឹងឮ
  7. អ្វីដែលអ្នកនឹងបង្កើត
  8. សាកល្បងដោយខ្លួនឯង

1. បញ្ហា final_v2_REAL

អ្នកប្រហែលជាធ្លាប់ឃើញ folder ដូចនេះ — ប្រហែលជានៅលើកុំព្យូទ័ររបស់អ្នកផ្ទាល់ទៀតផង៖

report.docx
report_v2.docx
report_v2_edited.docx
report_final.docx
report_final_v2.docx
report_final_v2_REAL.docx

មនុស្សគ្រប់គ្នាធ្វើបែបនេះ ព្រោះគ្រប់គ្នាធ្លាប់រៀនតាមបទពិសោធន៍ដ៏ឈឺចាប់ថា ការសរសេរជាន់លើ file មួយអាចបំផ្លាញការងារដែលអ្នកចង់បានមកវិញនៅពេលក្រោយ។ ប៉ុន្តែប្រព័ន្ធនេះមានបញ្ហាពិតប្រាកដ៖

  • តើមួយណាជាកំណែចុងក្រោយ? ឈ្មោះ file មិនប្រាប់អ្នកឲ្យប្រាកដទេ។
  • តើមានអ្វីផ្លាស់ប្តូររវាងពួកវា? អ្នកត្រូវបើក file ពីរនៅក្បែរគ្នា ហើយប្រៀបធៀបដោយភ្នែក។
  • ហេតុអ្វីបានជាវាផ្លាស់ប្តូរ? គ្មាននរណាសរសេរកត់ទុកទេ។
  • បើមនុស្សពីរនាក់កែវាក្នុងពេលតែមួយ? ម្នាក់ផ្ញើអ៊ីមែល report_final_dara.docx ម្នាក់ទៀតផ្ញើ report_final_sophea.docx ហើយឥឡូវមនុស្សម្នាក់ត្រូវបញ្ចូលពួកវាចូលគ្នាដោយដៃ។

ឥឡូវស្រមៃមើល project software មួយដែលមាន file រាប់រយ អ្នកអភិវឌ្ឍន៍ប្រាំនាក់ និងការផ្លាស់ប្តូររៀងរាល់ម៉ោង។ ការចម្លង folder ឈប់ដំណើរការស្ទើរតែភ្លាមៗ។ នោះហើយជាបញ្ហាដែល version control (ការគ្រប់គ្រងកំណែ) ដោះស្រាយ។

2. Snapshot មិនមែនជាការចម្លងទេ

ប្រព័ន្ធ version control កត់ត្រា history របស់ project មួយជាលំដាប់ snapshot។ Snapshot នីមួយៗថតទុកថា file នីមួយៗ នៅក្នុង project មើលទៅយ៉ាងដូចម្តេចនៅពេលមួយ ព្រមទាំង៖

  • អ្នកណា ជាអ្នកបង្កើតវា
  • ពេលណា ដែលគេបង្កើតវា
  • message ខ្លីមួយដែលពន្យល់ថា ហេតុអ្វី

អ្នកបន្តធ្វើការនៅក្នុង folder ធម្មតាតែមួយ ជាមួយឈ្មោះ file ធម្មតា — គ្មាន _v2 គ្មាន _final។ រាល់ពេលដែលអ្នកដល់ចំណុចមួយដែលគួរចងចាំ អ្នកប្រាប់ប្រព័ន្ធ version control ឲ្យថត snapshot មួយ។ History រស់នៅខាងក្រោយ មិនរំខានអ្នកទេ រហូតដល់ពេលអ្នកត្រូវការវា។

 snapshot 1        snapshot 2           snapshot 3
"Add home page" → "Add about section" → "Fix typo in title"
  Dara, Mon         Dara, Tue             Sophea, Wed

វាដូចជា save point នៅក្នុងហ្គេមវីដេអូ៖ អ្នកអាចបន្តលេងទៅមុខ ប៉ុន្តែអ្នកតែងតែអាចត្រឡប់ទៅចំណុចណាមួយដែលអ្នកបានរក្សាទុកវិញបាន។

3. អ្វីដែល Version Control ផ្តល់ឲ្យអ្នក

នៅពេលការផ្លាស់ប្តូរគ្រប់យ៉ាងត្រូវបានកត់ត្រា រឿងជាច្រើនក្លាយជាងាយស្រួល៖

  • Undo បានគ្រប់យ៉ាង។ ធ្វើឲ្យអ្វីមួយខូច? ត្រឡប់ទៅ snapshot កាលពីម្សិលមិញវិញ។ លុប file មួយដោយមិនដឹងខ្លួន? យកវាមកវិញ។
  • មើលឃើញច្បាស់ថាមានអ្វីផ្លាស់ប្តូរ។ ប្រៀបធៀប snapshot ពីរណាមួយ ម្តងមួយបន្ទាត់ៗ។
  • យល់ពីមូលហេតុ។ ការផ្លាស់ប្តូរនីមួយៗមាន message និងអ្នកសរសេរ។ នៅពេលអ្នករកឃើញកូដមួយបន្ទាត់ចម្លែកៗមួយឆ្នាំក្រោយ អ្នកអាចដឹងថាអ្នកណាបានបន្ថែមវា ហើយហេតុអ្វី។
  • ពិសោធន៍ដោយសុវត្ថិភាព។ សាកល្បងគំនិតប្រថុយប្រថានមួយនៅដោយឡែក ដោយមិនប៉ះពាល់កំណែដែលកំពុងដំណើរការ។ បើវាបរាជ័យ គ្រាន់តែបោះវាចោល។
  • ធ្វើការជាមួយគ្នា។ មនុស្សច្រើននាក់អាចផ្លាស់ប្តូរ project តែមួយក្នុងពេលតែមួយ ហើយប្រព័ន្ធបញ្ចូលការងាររបស់ពួកគេចូលគ្នា — ហើយប្រាប់អ្នកយ៉ាងច្បាស់នៅពេលការផ្លាស់ប្តូរពីរប៉ះទង្គិចគ្នា។
  • Backup ការងាររបស់អ្នក។ ចម្លង history ទាំងមូលទៅកុំព្យូទ័រមួយទៀត ឬទៅអ៊ីនធឺណិត ដូច្នេះ laptop ខូចមិនមានន័យថាការងារបាត់បង់ទេ។

4. Git៖ ឧបករណ៍

មានប្រព័ន្ធ version control ជាច្រើនក្នុងរយៈពេលកន្លងមក ប៉ុន្តែសព្វថ្ងៃនេះ មានមួយដែលឈ្នះស្ទើរតែទាំងស្រុង៖ Git។

Git ត្រូវបានបង្កើតនៅឆ្នាំ 2005 ដោយ Linus Torvalds — មនុស្សតែម្នាក់ដែលបានបង្កើត Linux — ដើម្បីគ្រប់គ្រង source code របស់ Linux kernel ដែលអ្នកអភិវឌ្ឍន៍រាប់ពាន់នាក់ផ្លាស់ប្តូរក្នុងពេលតែមួយ។ វាត្រូវតែលឿន អាចទុកចិត្តបាន និងដំណើរការល្អសម្រាប់ក្រុមធំៗ។ ក្រោយមកវាប្រែជាល្អសម្រាប់ project តូចៗផងដែរ។

រឿងមួយចំនួនដែលគួរដឹងអំពី Git៖

  • វាជាកម្មវិធីមួយនៅលើកុំព្យូទ័ររបស់អ្នក។ អ្នកដំឡើងវា ហើយភាគច្រើនអ្នកប្រើវាដោយវាយ command នៅក្នុង terminal ដូចជា git commit។
  • វាដំណើរការដោយគ្មានអ៊ីនធឺណិត។ History ទាំងមូលរបស់ project អ្នកត្រូវបានរក្សាទុកនៅលើកុំព្យូទ័ររបស់អ្នកផ្ទាល់ នៅខាងក្នុង hidden folder មួយឈ្មោះ .git។ អ្នកមិនត្រូវការអ៊ីនធឺណិតដើម្បីរក្សាទុក snapshot អាន history ឬ undo អ្វីមួយទេ។
  • វាជាប្រព័ន្ធ distributed (បែងចែក)។ ច្បាប់ចម្លងនីមួយៗនៃ project មាន history ពេញលេញ។ គ្មានកុំព្យូទ័រតែមួយណាដែល project ពឹងផ្អែកលើទេ។
  • វាឥតគិតថ្លៃ និងជា open source។

5. GitHub៖ គេហទំព័រ

មនុស្សច្រើនតែច្រឡំរវាងរឿងទាំងពីរនេះ ដូច្នេះនេះជាភាពខុសគ្នាក្នុងមួយបន្ទាត់៖

Git គឺជាឧបករណ៍ដែលតាមដាន history។ GitHub គឺជាគេហទំព័រមួយដែលរក្សាទុក project Git នៅលើអ៊ីនធឺណិត ហើយបន្ថែមឧបករណ៍សម្រាប់ធ្វើការជាមួយគ្នា។

GitHub ផ្តល់ឲ្យអ្នកនូវ៖

  • កន្លែងមួយដើម្បី backup project Git របស់អ្នកនៅលើអ៊ីនធឺណិត
  • វិធីមួយដើម្បី ចែករំលែក ពួកវា — ជាសាធារណៈជាមួយពិភពលោក ឬជាឯកជនជាមួយក្រុមរបស់អ្នក
  • pull request ដែលសមាជិកក្រុមពិនិត្យ (review) ការផ្លាស់ប្តូររបស់គ្នាទៅវិញទៅមក មុនពេលវាត្រូវបានទទួលយក
  • issue ដែលជាបញ្ជីការងារត្រូវធ្វើ និងកន្លែងតាមដាន bug សម្រាប់ project នីមួយៗ
  • ការ host គេហទំព័រដោយឥតគិតថ្លៃជាមួយ GitHub Pages (អ្នកនឹងប្រើវានៅជំពូកចុងក្រោយ)

GitHub មិនមែនជាជម្រើសតែមួយទេ។ GitLab និង Bitbucket ធ្វើការងារដូចគ្នា ហើយក្រុមហ៊ុនខ្លះដំណើរការ Git server ផ្ទាល់ខ្លួន។ ដោយសារពួកវាទាំងអស់ប្រើ Git នៅពីក្រោយ អ្វីៗទាំងអស់ដែលអ្នករៀនក្នុងស៊េរីនេះប្រើបានជាមួយពួកវាទាំងអស់។ GitHub គ្រាន់តែជាមួយដែលពេញនិយមបំផុត ហើយវាជាកន្លែងដែល project open-source ភាគច្រើន — និង portfolio របស់អ្នកអភិវឌ្ឍន៍ភាគច្រើន — រស់នៅ។

Git ដំណើរការបានយ៉ាងល្អដោយគ្មាន GitHub។ GitHub មិនអាចដំណើរការដោយគ្មាន Git ទេ។

6. ពាក្យដែលអ្នកនឹងឮ

អ្នកនឹងស្គាល់ពាក្យនីមួយៗនេះឲ្យបានច្បាស់នៅជំពូកក្រោយៗ។ សម្រាប់ពេលនេះ គ្រាន់តែស្គាល់ឈ្មោះរបស់វាសិន៖

ពាក្យអត្ថន័យ
Repository (repo)Project មួយដែលត្រូវបានតាមដានដោយ Git — file របស់អ្នក បូកនឹង history ទាំងមូលរបស់វា
CommitSnapshot មួយនៅក្នុង history ដែលមានអ្នកសរសេរ កាលបរិច្ឆេទ និង message
Branchខ្សែការងារដាច់ដោយឡែកមួយ ដូច្នេះអ្នកអាចសាកល្បងអ្វីៗដោយមិនប៉ះពាល់កំណែចម្បង
Mergeការបញ្ចូលការងារពី branch មួយទៅក្នុង branch មួយទៀត
Remoteច្បាប់ចម្លងនៃ repository នៅកន្លែងផ្សេង ជាធម្មតានៅលើ GitHub
Pushការបញ្ជូន commit ថ្មីៗរបស់អ្នកឡើងទៅ remote
Pullការទាញយក commit ថ្មីៗចុះមកពី remote
Cloneការទាញយកច្បាប់ចម្លងពេញលេញនៃ repository រួមទាំង history ផង
Pull request (PR)សំណើមួយនៅលើ GitHub ដើម្បី merge branch របស់អ្នក ដើម្បីឲ្យអ្នកដទៃអាច review វាជាមុនសិន

7. អ្វីដែលអ្នកនឹងបង្កើត

ជំនួសឲ្យឧទាហរណ៍លេងៗដាច់ៗពីគ្នា ស៊េរីនេះបង្កើត project តែមួយ ពីដើមដល់ចប់៖ គេហទំព័រផ្ទាល់ខ្លួនតូចមួយឈ្មោះ my-site។

  • នៅជំពូកទី 3–7 អ្នកនឹងបង្កើតវានៅលើកុំព្យូទ័ររបស់អ្នកផ្ទាល់ ដោយប្រើ Git ដើម្បីរក្សាទុក snapshot អាន history កែកំហុស និងធ្វើការលើ branch។
  • នៅជំពូកទី 8–10 អ្នកនឹងដាក់វាលើ GitHub ហើយអនុវត្ត workflow ដែលក្រុមពិតៗប្រើ។
  • នៅជំពូកទី 11 អ្នកនឹងបោះពុម្ពផ្សាយវាលើអ៊ីនធឺណិតដោយឥតគិតថ្លៃ នៅអាសយដ្ឋានមួយដូចជា https://<your-username>.github.io/my-site/។

អ្នកមិនចាំបាច់ចេះ HTML ទេ។ ទំព័រទាំងនោះតូចណាស់ ហើយកូដគ្រប់បន្ទាត់ត្រូវបានផ្តល់ឲ្យអ្នករួចស្រេច។ (បើអ្នកចង់ធ្វើឲ្យវាស្អាតនៅពេលក្រោយ នោះហើយជាគោលបំណងរបស់ មូលដ្ឋានគ្រឹះ HTML និង CSS នៅលើ roadmap។)

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

មិនទាន់មានអ្វីត្រូវដំឡើងនៅឡើយទេ — នោះជាជំពូកបន្ទាប់។ ជំនួសវិញ៖

  1. រក folder _final_v2 មួយ។ មើលនៅក្នុង Documents ឬ Downloads របស់អ្នក។ តើអ្នកមាន file ដែលមានលេខកំណែ ឬពាក្យ «final» នៅក្នុងឈ្មោះទេ? នោះហើយជា version control ដោយដៃ។
  2. មើល history របស់ project ពិតមួយ។ បើក github.com/git/git — source code របស់ Git ខ្លួនឯង ដែលរក្សាទុកក្នុង Git និង host នៅលើ GitHub។ នៅជិតផ្នែកខាងលើ ចុចលើចំនួន commits (វាមានរូបនាឡិកា)។ ធាតុនីមួយៗគឺជា snapshot មួយ ដែលមានអ្នកសរសេរ កាលបរិច្ឆេទ និង message។ មានរាប់ម៉ឺន។
  3. បើក commit មួយ។ ចុចលើ commit message ណាមួយ។ បន្ទាត់ពណ៌បៃតងត្រូវបានបន្ថែម បន្ទាត់ពណ៌ក្រហមត្រូវបានលុបចេញ។ នោះហើយជាអ្វីដែលអ្នកនឹងអាននៅក្នុង project ផ្ទាល់ខ្លួនរបស់អ្នកក្នុងពេលឆាប់ៗនេះ។

បន្ទាប់មក តោះដំឡើង Git ហើយរៀបចំវា។

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

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