Repository ដំបូងរបស់អ្នក

មាតិកា

  1. បង្កើត Project
  2. git init៖ ចាប់ផ្តើមតាមដាន
  3. git status៖ មិត្តល្អបំផុតរបស់អ្នក
  4. តំបន់ទាំងបី
  5. git add៖ Stage ការផ្លាស់ប្តូរ
  6. git commit៖ ថត Snapshot
  7. វដ្តប្រចាំថ្ងៃ
  8. .gitignore៖ File ដែល Git មិនគួរតាមដានជាដាច់ខាត
  9. សាកល្បងដោយខ្លួនឯង

1. បង្កើត Project

បង្កើត folder មួយសម្រាប់គេហទំព័រដែលអ្នកនឹងបង្កើតពេញមួយស៊េរីនេះ ហើយបើកវានៅក្នុង editor របស់អ្នក៖

cd ~
mkdir my-site
cd my-site
code .

នៅក្នុង VS Code បង្កើត file មួយឈ្មោះ index.html នៅខាងក្នុង my-site ជាមួយមាតិកានេះ (ប្តូរឈ្មោះទៅជាឈ្មោះរបស់អ្នក)៖

<!DOCTYPE html>
<html>
  <head>
    <title>Dara's Site</title>
  </head>
  <body>
    <h1>Hi, I'm Dara</h1>
    <p>I'm learning Git.</p>
  </body>
</html>

រក្សាទុកវា។ បើអ្នកចង់ សូមចុចពីរដងលើ file នោះនៅក្នុង file manager របស់អ្នក ដើម្បីបើកវានៅក្នុង browser — វាជាទំព័រ web ពិតប្រាកដ។

ពេលនេះ វាគ្រាន់តែជា folder ធម្មតាមួយប៉ុណ្ណោះ។ Git មិនទាន់ដឹងថាវាមានទេ។

2. git init៖ ចាប់ផ្តើមតាមដាន

ដើម្បីប្រែក្លាយ folder នេះទៅជា repository Git សូមរត់ command នេះនៅខាងក្នុងវា៖

git init
Initialized empty Git repository in /Users/dara/my-site/.git/

Command តែមួយនោះបានបង្កើត hidden folder មួយឈ្មោះ .git នៅខាងក្នុង my-site។ រកមើលវា៖

ls -a
.          ..         .git       index.html

Folder .git គឺជា repository ខ្លួនឯង។ រាល់ snapshot ដែលអ្នកធ្លាប់ថត រាល់ branch និងរាល់ setting សម្រាប់ project នេះ ត្រូវបានរក្សាទុកនៅខាងក្នុងវា ជា file ធម្មតា។ File ផ្ទាល់ខ្លួនរបស់អ្នកនៅដដែល មិនត្រូវបានប៉ះពាល់ទេ។

ការព្រមានពីរ៖

  • កុំកែប្រែ ឬលុបអ្វីៗនៅខាងក្នុង .git ដោយដៃ។ បើអ្នកលុប folder នោះ អ្នកលុប history ទាំងមូលរបស់ project — file បច្ចុប្បន្នរបស់អ្នកនៅរស់ ប៉ុន្តែ snapshot ទាំងអស់បាត់។
  • រត់ git init តែម្តងគត់សម្រាប់ project នីមួយៗ នៅក្នុង folder ខាងលើបំផុតរបស់ project។ មិនមែននៅក្នុង home folder របស់អ្នកទេ ហើយក៏មិនមែននៅខាងក្នុង folder ដែលជា repository រួចហើយដែរ។

3. git status៖ មិត្តល្អបំផុតរបស់អ្នក

git status ប្រាប់អ្នកពីអ្វីដែល Git មើលឃើញនៅពេលនេះ។ រត់វាជានិច្ច — មុន និងក្រោយ command Git ផ្សេងទៀតគ្រប់ៗ រហូតដល់វាក្លាយជាទម្លាប់៖

git status
On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
	index.html

nothing added to commit but untracked files present (use "git add" to track)

អានវាម្តងមួយបន្ទាត់៖

  • On branch main — អ្នកកំពុងនៅលើខ្សែការងារចម្បង (branch នឹងមកដល់នៅជំពូកទី 6)។
  • No commits yet — មិនទាន់មាន snapshot ណាមួយនៅឡើយទេ។
  • Untracked files: index.html — Git មើលឃើញ file នេះ ប៉ុន្តែវាមិនទាន់តាមដានវាទេ។ Git មិនដែលតាមដាន file ណាមួយរហូតដល់អ្នកប្រាប់វាទេ។

សង្កេតមើលថា Git ថែមទាំងប្រាប់អ្នកពីអ្វីដែលត្រូវធ្វើបន្ទាប់ទៀតផង៖ use "git add"។ នៅពេលអ្នកមិនប្រាកដ git status ស្ទើរតែតែងតែមានការណែនាំ។

4. តំបន់ទាំងបី

មុនពេលអ្នកថត snapshot អ្នកត្រូវការគំនិតមួយដែលធ្វើឲ្យផ្នែកដទៃទៀតរបស់ Git មានន័យ។ Project របស់អ្នកមាន តំបន់បី៖

 Working directory      Staging area           Repository (.git)
 ─────────────────      ────────────           ─────────────────
 the files you see  →   changes packed for  →  the saved snapshots
 and edit               the next snapshot      (commits)
              git add               git commit
  1. Working directory — file ពិតប្រាកដរបស់អ្នក ដែលអ្នកបើក និងកែប្រែ។
  2. Staging area — «ប្រអប់វេចខ្ចប់» មួយសម្រាប់ snapshot បន្ទាប់។ អ្នកជ្រើសរើសយ៉ាងច្បាស់ថាការផ្លាស់ប្តូរណាខ្លះចូលទៅក្នុងវា។
  3. Repository — history អចិន្ត្រៃយ៍នៃ snapshot ដែលរក្សាទុកនៅក្នុង .git។

ហេតុអ្វីត្រូវមានជំហានកណ្តាល? ព្រោះអ្នកច្រើនតែផ្លាស់ប្តូររឿងច្រើនក្នុងពេលតែមួយ ប៉ុន្តែពួកវាគួរនៅក្នុង snapshot ដាច់ដោយឡែកពីគ្នា។ ឧបមាថាអ្នកបានកែអក្ខរាវិរុទ្ធមួយ ហើយ បានចាប់ផ្តើមផ្នែកថ្មីមួយដែលមិនទាន់ចប់។ ជាមួយ staging area អ្នកអាចថត snapshot តែការកែអក្ខរាវិរុទ្ធនោះឥឡូវនេះ ហើយទុកផ្នែកដែលធ្វើបានពាក់កណ្តាលសម្រាប់ពេលក្រោយ។ Snapshot នីមួយៗនៅតូច ហើយនិយាយអំពីរឿងតែមួយ។

5. git add៖ Stage ការផ្លាស់ប្តូរ

ដាក់ index.html ចូលទៅក្នុង staging area៖

git add index.html
git status
On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
	new file:   index.html

«Changes to be committed» គឺជា staging area។ File នោះត្រូវបានវេចខ្ចប់ ហើយរួចរាល់។

វិធីទូទៅមួយចំនួនក្នុងការប្រើ git add៖

git add index.html          # one file
git add index.html about.html   # several files
git add .                   # everything that changed in this folder

git add . ងាយស្រួល ហើយអ្នកនឹងប្រើវាច្រើន — ប៉ុន្តែតែងតែរត់ git status ជាមុនសិន ដើម្បីឲ្យអ្នកដឹងច្បាស់ថា «អ្វីៗទាំងអស់» រួមមានអ្វីខ្លះ។

6. git commit៖ ថត Snapshot

ឥឡូវនេះ រក្សាទុក snapshot ជាមួយ message មួយដែលពិពណ៌នាវា៖

git commit -m "Add home page"
[main (root-commit) 3f2a1c9] Add home page
 1 file changed, 10 insertions(+)
 create mode 100644 index.html

នោះគឺជា commit ដំបូងរបស់អ្នក។ Git បានកត់ត្រាមាតិការបស់ staging area ឈ្មោះ និងអ៊ីមែលរបស់អ្នកពីជំពូកទី 2 កាលបរិច្ឆេទ និងម៉ោង និង message។ 3f2a1c9 គឺជាផ្នែកខាងដើមនៃ ID តែមួយគត់របស់ commit — របស់អ្នកនឹងខុសពីនេះ។ (ជំពូកទី 4 ពន្យល់ពី ID ទាំងនេះ។)

រត់ git status ម្តងទៀត៖

On branch main
nothing to commit, working tree clean

«Working tree clean» មានន័យថា file របស់អ្នកដូចគ្នាបេះបិទនឹង snapshot ចុងក្រោយ។ គ្មានអ្វីដែលមិនទាន់រក្សាទុកទេ។

បើអ្នកភ្លេច -m "..." ហើយគ្រាន់តែវាយ git commit Git នឹងបើក editor ដែលអ្នកបានកំណត់នៅជំពូកទី 2 ដើម្បីឲ្យអ្នកអាចសរសេរ message នៅទីនោះ។ វាយវានៅលើបន្ទាត់ទីមួយ រក្សាទុក ហើយបិទ tab។

7. វដ្តប្រចាំថ្ងៃ

ស្ទើរតែការងារ Git ប្រចាំថ្ងៃទាំងអស់របស់អ្នក គឺជាវដ្តនេះ៖

edit files  →  git status  →  git add  →  git commit

សាកល្បងមួយជុំទៀត។ បន្ថែមបន្ទាត់មួយទៅក្នុង index.html នៅក្រោមកថាខណ្ឌទីមួយ៖

    <p>I live in Phnom Penh.</p>

រក្សាទុក បន្ទាប់មកពិនិត្យ៖

git status
On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
	modified:   index.html

no changes added to commit (use "git add" and/or "git commit -a")

Git បានកត់សម្គាល់៖ file នោះត្រូវបាន modified (កែប្រែ) ប៉ុន្តែការផ្លាស់ប្តូរនៅតែនៅក្នុង working directory ប៉ុណ្ណោះ — មិនទាន់ stage នៅឡើយទេ។ Stage ហើយ commit វា៖

git add index.html
git commit -m "Add where I live"

នោះហើយជាវដ្តទាំងមូល។ ឥឡូវនេះអ្នកមាន snapshot ពីរ ហើយអ្នកអាចត្រឡប់ទៅមួយណាក៏បាន។

តើអ្នកគួរ commit នៅពេលណា? រាល់ពេលដែលអ្នកបានបញ្ចប់ជំហានតូចមួយដែលមានន័យ ហើយដំណើរការ — «Add contact link», «Fix broken image»។ Commit តូចៗច្រើនមានប្រយោជន៍ជាង commit ដ៏ធំតែមួយនៅចុងថ្ងៃឆ្ងាយណាស់។

8. .gitignore៖ File ដែល Git មិនគួរតាមដានជាដាច់ខាត

File ខ្លះ មិនគួរ ចូលទៅក្នុង repository ជាដាច់ខាត៖

  • ព័ត៌មានសម្ងាត់ — password, API key, file .env
  • សំរាមដែល OS របស់អ្នកបង្កើត — .DS_Store នៅលើ macOS, Thumbs.db នៅលើ Windows
  • អ្វីៗដែលអ្នកអាចបង្កើតឡើងវិញបាន — node_modules/, folder build output, log file

អ្នករាយបញ្ជីពួកវានៅក្នុង file ពិសេសមួយឈ្មោះ .gitignore នៅក្នុង folder ខាងលើបំផុតរបស់ project។ បង្កើតវាឥឡូវនេះ៖

# macOS / Windows clutter
.DS_Store
Thumbs.db

# Secrets — never commit these
.env

# Dependencies and build output
node_modules/
dist/

បន្ទាត់នីមួយៗគឺជាឈ្មោះ file ឬ pattern មួយ។ បន្ទាត់ដែលបញ្ចប់ដោយ / មានន័យថា folder ទាំងមូល ហើយបន្ទាត់ដែលចាប់ផ្តើមដោយ # គឺជា comment។ ឥឡូវនេះ Git នឹងធ្វើដូចជា file ទាំងនោះមិនមាន — ពួកវានឹងមិនបង្ហាញនៅក្នុង git status ទេ ហើយ git add . នឹងរំលងពួកវា។

File .gitignore ខ្លួនវាផ្ទាល់ គួរតែ ត្រូវបានតាមដាន ដើម្បីឲ្យអ្នកគ្រប់គ្នាដែលធ្វើការលើ project ប្រើច្បាប់ដូចគ្នា៖

git add .gitignore
git commit -m "Add .gitignore"

សំខាន់៖ .gitignore មានឥទ្ធិពលតែលើ file ដែល Git មិនទាន់តាមដានប៉ុណ្ណោះ។ បើអ្នកបាន commit ព័ត៌មានសម្ងាត់មួយរួចហើយ ការបន្ថែមវាទៅក្នុង .gitignore នឹងមិនលុបវាចេញពី history ទេ។ ចាត់ទុកព័ត៌មានសម្ងាត់នោះថាត្រូវបានលេចធ្លាយ៖ ប្តូរ password ឬបង្កើត key ថ្មី។

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

  1. បង្កើត my-site ជាមួយ index.html ខាងលើ ហើយរត់ git init។
  2. រក folder .git ដោយប្រើ ls -a ហើយបើកការបង្ហាញ hidden file នៅក្នុង file manager របស់អ្នក ដើម្បីមើលវានៅទីនោះផងដែរ។
  3. ធ្វើ commit ដំបូងៗរបស់អ្នក៖ «Add home page» បន្ទាប់មក «Add where I live»។ រត់ git status មុន និងក្រោយ command នីមួយៗ ហើយអានអ្វីដែលវានិយាយ។
  4. សាកល្បង staging area។ ផ្លាស់ប្តូរ ពីរ បន្ទាត់នៅក្នុង index.html — ឧទាហរណ៍ ចំណងជើង និងទីក្រុងរបស់អ្នក។ ឥឡូវនេះ បង្កើត file ថ្មីមួយ notes.txt ដែលមានអ្វីក៏បាននៅខាងក្នុង។ រត់ git status៖ file មួយ modified មួយទៀត untracked។ Stage ហើយ commit តែ index.html ប៉ុណ្ណោះ បន្ទាប់មករត់ git status ម្តងទៀត។ notes.txt នៅតែ untracked កំពុងរង់ចាំ។
  5. Ignore file មួយ។ បន្ថែម notes.txt ទៅក្នុង .gitignore បន្ទាប់មករត់ git status។ វាបាត់ពីបញ្ជី។ Commit .gitignore ដែលបានកែប្រែ។

អ្នកបានរក្សាទុក snapshot ជាច្រើនហើយ។ បន្ទាប់មក តោះរៀនអានពួកវា។

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

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