អ្វីទៅ Git Stash?

Chhouk Davy| M-E, Programming, Space, Technology.
ថ្ងៃទី៖ 2 កក្កដា 2020
ប្រវែង៖ 3 នាទី
👉 Version Control ដោយប្រើកម្មវិធីគ្រប់គ្រងកំណែ Git
បើយើងចេះប្រើ Git មែនយើងត្រូវតែឆ្លើយសំណួរនេះបាន “អ្វីទៅ Git Stash?” ដែលជាសំណួរដែលគេតែងតែសួរបើគេចង់សាកថាយើងពិតជាចេះប្រើ Git ស្ទាត់ពិតប្រាកដ ឫអត់នោះ។ អ៊ីចឹងយើងមកមើលទាំងអស់គ្នាថាយើងអាចប្រើ Git Stash នេះដើម្បីអ្វី។
អ្វីទៅជា Git Stash?
Stash ជាមុខងារមួយក្នុង Git ដែលយើងអាចប្រើដើម្បីលុបរាល់ការកែប្រែមិនថាកូដ ឫហ្វាល់ផ្សេងៗក្នុង Branch ដែលយើងកំពុងធ្វើការ ហើយរក្សារទុកនៅកន្លែងមួយដែលយើងអាចទាញយកមកវិញនៅពេលក្រោយបាន។
ករណីដែលយើងប្រើ Stash
ករណីដែលយើងប្រើ Stash មានច្រើនករណី តែជាទូទៅខ្ញុំប្រើវាពេល៖
- ចង់
Pull
កូដពីRepository
ទាំងដែលមានកូដត្រូវបានកែរួចហើយខ្លះ ហើយវាconflicts
ជាមួយកូដនៅលើRepository
។ - ចង់ប្តូរ Branch ខណៈដែលយើងកំពុងតែសរសេរកូដក្នុង Branch មួយហើយចង់ត្រលប់មកវិញពេលក្រោយ។
- ចង់យកការកែប្រែកូដក្នុង Branch ដែលខ្ញុំកំពុងកូដទៅកាន់ Branch មួយទៀត។
មុខងាររបស់ Git Stash
Git Stash មាន command ដូចខាងក្រោមនេះដែលយើងអាចប្រើបាន៖
git stash
git stash save
git stash list
git stash apply
git stash changes
git stash pop
git stash drop
git stash clear
git stash branch
សាកល្បង Git Stash
1. បង្កើត Git Project
បើមិនទាន់បានបញ្ជូល git ទេ យើងត្រូវតម្លើងវាសិន (តាមនេះ https://git-scm.com/downloads)។ បើមានហើយយើងអាចបង្កើត Git Project បានហើយដោយជាដំបូងយើងបើក Terminal ហើយចូលទៅកាន់ទីតាំងដែលយើងចង់ទុក Project របស់យើង ហើយយើងបង្កើត Project Folder ហើយដាក់ប្រើ Git ៖
➜ cd Star/playground #ដាក់នៅកន្លែងណាក៏បាន
➜ mkdir git-stash-demo #បង្កើត folder
➜ cd git-stash-demo #ចូលក្នុង folder
➜ echo "# git-stash-demo" >> README.md #បង្កើត README.md
➜ git init #ចាប់ផ្ដើមប្រើក្នុងសម្រាប់ project របស់យើង
2. ប្រើ main
ជំនួស master
ជា default branch និងបង្កើត develop
branch
ពេលយើង git init
យើងនឹងបាន branch មួយដែល Git បង្កើតឲ្យយើងស្រាប់។ តាមពិតទៅយើងមិនចាំបាច់ប្ដូរវាទៅជា main
ក៏បានដែរ តែដោយថាមួយរយះកន្លងមកនេះមានព័ត៌មានថា Github ចង់ប្តូរវាចេញដោយសារ master
អាចមានអត្ថន័យរើសអើង។ អ៊ីចឹងហើយបើយើងប្រើឈ្មោះអីផ្សេងក៏ជាការល្អហ្អាណ៎ា! ដោយសារយើងមិនទាន់បាន commit
ទេ យើងអាចបង្កើត branch ថ្មីឈ្មោះ main
ហើយ commit
ទៅនោះ main
នឹងក្លាយជា default branch ស្រេច។ បន្ទាប់មកយើងបង្កើត branch មួយទៀតឈ្មោះ develop
។
➜ git checkout -b main #បង្កើត branch ឈ្មោះ main
➜ git add . #ដាក់ Changes ក្នុង Stage
➜ git commit -m "Init project" #កត់ត្រាកំណែរ Commit
➜ git checkout -b develop #បង្កើត branch ថ្មីឈ្មោះ develop
ហើយដើម្បីមើលថាយើងមាន branch អ្វីខ្លះ យើងអាចរាន់៖
➜ git branch -a #ដែល -a = all
នោះយើងនឹងឃើញរាល់ branch ទាំងអស់ដែលយើងមាន៖
* develop #ដែល * = Branch ដែលយើងកំពុងនៅ
main
3. Stashing
ដើម្បីសាកប្រើ Git Stash បាន ខ្ញុំបង្កើតហ្វាល់មួយឈ្មោះ index.html
ហើយដាក់ថេមផ្លេត HTML5 ចូល៖
➜ touch index.html #បង្កើតហ្វាល់ឈ្មោះ index.html
ហើយនេះជា HTML ដែលខ្ញុំដាក់ចូល ហើយ save៖
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>Daseveny's Git Stash</title>
<meta name="description" content="Daseveny's Git Stash" />
<meta name="author" content="Daseveny" />
</head>
<body>
<div>Hello, World! Hello, Daseveny!</div>
</body>
</html>
ហើយខ្ញុំដាក់ចូល stage និង commit ដើម្បីឲ្យ Git ចាប់ផ្ដើម track ហ្វាល់ដែលខ្ញុំទើបបង្កើត៖
➜ git add index.html #ដាក់ index.html ចូល stage
➜ git commit -m "Add index.html" #commit ហ្វាល់ដែលមានក្នុង stage ជាមួយ -m = message
បន្ទាប់មកខ្ញុំកែហ្វាល់ index.html
និង README.md
ដើម្បីឲ្យមានកំណែដែលយើងអាច stash
វាបាន។
យើងអាចរាន់ Command នេះដើម្បីមើលថាមានហ្វាល់ណាខ្លះបានផ្លាស់ប្ដូរ៖
➜ git status #ដើម្បីមើលថាមានអ្វីផ្លាស់ប្ដូរខ្លះ
នោះយើងនឹងឃើញ៖
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: README.md
modified: index.html
no changes added to commit (use "git add" and/or "git commit -a")
យើងសង្កេតឃើញថាមានហ្វាល់ 2 ដែលបានផ្លាស់ប្ដូរគឺ README.md និង index.html ហ្នឹងឯង។
តាមពិតទៅយើងអាចប្ដូរ branch ពី develop
ទៅ main
វិញបានដោយគ្នានបញ្ហាអ្វីនោះទេសម្រាប់ពេលនេះដោយសារកំណែក្នុង develop
មិនមាន conflicts
ជាមួយ main
ឡើយ។ តែសាកស្រមៃមើលថាបើសិនជាយើងមានកូដប្រែប្រួលច្រើន វាប្រហែលជាមាន conflicts
ហើយពេលហ្នឹងហើយដែលយើងត្រូវប្រើ Git Stash។ នៅមានករណីផ្សេងទៀតដែលយើងអាចប្រើ Git Stash បាន។
- ដាក់កូដដែលត្រូវបានកែចូលក្នុង Stash List (តាមពិតយើងអាចដាក់ឈ្មោះវាបានទៀត តែខ្ញុំខ្ជិល 😂)
➜ git stash #ដាក់ចូល Stash
Saved working directory and index state WIP on develop: e721547 Add index.html
- មើលថាយើងមាន Stash Item អ្វីខ្លះ
➜ git stash list #មើល Stash List
យើងអាចឃើញ List មួយដែលមាន៖
stash@{0}: WIP on develop: e721547 Add index.html
- ទាញយកកូដដែលយើងបាន Stash
ហើយបើយើងមើល git status
យើងនឹងសង្កេតឃើញថាយើងលែងមានហ្វាល់ដែលមានកំណែប្រែទៀតហើយ គឺវាទទេស្អាត។ ហើយបើយើងចង់បានវាមកវិញ យើងមានជម្រើសពីរ git stash apply stash@{0}
និងមួយទៀត git stash pop
។ apply
ខុសពី pop
ត្រង់ apply
គ្រាន់តែយក stash មកដាក់ក្នុង branch របស់យើងវិញទេហើយទុកវាក្នុង Stash List ដដែល ចំណែកឯ pop
វិញយក stash ចុងក្រោយមកដាក់ចូល branch យើងហើយលុបវាចេញពី Stash List។
ខ្ញុំនឹងប្រើ apply
សម្រាប់ពេលនេះ
➜ git stash apply stash@{0} #Apply stash@{0}
ហើយបើខ្ញុំចង់ទៅ apply
stash នៅ branch ផ្សេងទៀតក៏បានដែរមិនចាំបាច់ថាត្រូវតែនៅក្នុង branch ដែលយើងដាក់ stash ទេ។
- សម្អាត Stash List
យើងចុងក្រោយគេនោះ យើងអាចសម្អាត Stash List របស់យើងបានដោយរាន់៖
➜ git stash clear #សម្អាត Stash List
នោះ Stash List របស់យើងនឹងស្អាតដូចថ្មីអ៊ីចឹង។