អ្វីទៅ 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 stashgit stash savegit stash listgit stash applygit stash changesgit stash popgit stash dropgit stash cleargit 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 ដែលយើងកំពុងនៅ
main3. 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 របស់យើងនឹងស្អាតដូចថ្មីអ៊ីចឹង។







