អ្វីទៅ Git Stash?

👉 Version Control ដោយប្រើកម្មវិធីគ្រប់គ្រងកំណែ Git

បើយើងចេះប្រើ Git មែនយើងត្រូវតែឆ្លើយសំណួរនេះបាន “អ្វីទៅ Git Stash?” ដែលជាសំណួរដែលគេតែងតែសួរបើគេចង់សាកថាយើងពិតជាចេះប្រើ Git ស្ទាត់ពិតប្រាកដ ឫអត់នោះ។ អ៊ីចឹងយើងមកមើលទាំងអស់គ្នាថាយើងអាចប្រើ Git Stash នេះដើម្បីអ្វី។

អ្វីទៅជា Git Stash?

Stash ជាមុខងារមួយក្នុង Git ដែលយើងអាចប្រើដើម្បីលុបរាល់ការកែប្រែមិនថាកូដ ឫហ្វាល់ផ្សេងៗក្នុង Branch ដែលយើងកំពុងធ្វើការ ហើយរក្សារទុកនៅកន្លែងមួយដែលយើងអាចទាញយកមកវិញនៅពេលក្រោយបាន។

Git Stash

ករណីដែលយើងប្រើ Stash

ករណីដែលយើងប្រើ Stash មានច្រើនករណី តែជាទូទៅខ្ញុំប្រើវាពេល៖

  • ចង់ Pull កូដពី Repository ទាំងដែលមានកូដត្រូវបានកែរួចហើយខ្លះ ហើយវា conflicts ជាមួយកូដនៅលើ Repository
  • ចង់ប្តូរ Branch ខណៈដែលយើងកំពុងតែសរសេរកូដក្នុង Branch មួយហើយចង់ត្រលប់មកវិញពេលក្រោយ។
  • ចង់យកការកែប្រែកូដក្នុង Branch ដែលខ្ញុំកំពុងកូដទៅកាន់ Branch មួយទៀត។

មុខងាររបស់ Git Stash

Git Stash មាន command ដូចខាងក្រោមនេះដែលយើងអាចប្រើបាន៖

  1. git stash
  2. git stash save
  3. git stash list
  4. git stash apply
  5. git stash changes
  6. git stash pop
  7. git stash drop
  8. git stash clear
  9. 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 #បង្កើត​ foldercd git-stash-demo #ចូលក្នុង folderecho "# git-stash-demo" >> README.md #បង្កើត README.mdgit 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 ឈ្មោះ maingit add . #ដាក់ Changes ក្នុង Stagegit commit -m "Init project" #កត់ត្រាកំណែរ Commitgit 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 ចូល stagegit 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 popapply ខុសពី 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 របស់យើងនឹងស្អាតដូចថ្មីអ៊ីចឹង។

ចំនួនអាន៖ 83
ចែករំលែក៖
រូបភាពជ្រើសរើស
កំពុងឡូដ...
អត្ថបទ​ពេញនិយម
Article's thumbnail

ការប្រើប្រាស់ Dependency ក្នុងការ​សរសេរសូហ្វវែរ៍

Article's thumbnail

ដំណើរកម្សាន្តបោះតង់ និងឡើងជួរភ្នំឱរ៉ាល់របស់ខ្ញុំ

Article's thumbnail

ពេលធ្វើ Software Project មិនគួររំលងរបស់ទាំងអស់នេះ

Article's thumbnail

មានអ្វីកើតឡើងពេល Apple ប្ដូរមក ARM?

Article's thumbnail

អ្វីទៅ UX/UI?

អត្ថបទ​ថ្មីៗ
Article's thumbnail

ការប្រើប្រាស់ Dependency ក្នុងការ​សរសេរសូហ្វវែរ៍

Article's thumbnail

លាហើយបណ្ដាញសង្គម

Article's thumbnail

រឿងដែលកំពុងតែកើតឡើងមកលើ Intel

Article's thumbnail

ចាវ៉ាស្ក្រីបត៍ក្នុងប្រៅស៍ស័រ

Article's thumbnail

គួរប្រើ Storage មួយណាសម្រាប់វែបសាយ?

You've reached singularity, the beginning of time!