មួយម៉ូដែលទទួលបានជោគជ័យនៃសាខាក្នុង Git

ដោយដឹងពីរបៀបប្រើ Git គឺមានសារៈសំខាន់, ហើយនេះរួមបញ្ចូលទាំងការរក្សាបាននូវបរិស្ថានអភិវឌ្ឍន៍ផ្នែកទន់គ្រប់គ្រងបានសហការគ្នា.

សេវាឥណទាន

ភ្នំពេញប៉ុស្តិ៍នេះជាឯកសារដើមរបស់ព័រទុយហ្កាល់, នៅក្នុងភាសាអង់គ្លេស, “មួយម៉ូដែលសាខា Git ដែលទទួលបានជោគជ័យ“, ត្រូវបានអនុញ្ញាតដោយអ្នកនិពន្ធ, វ៉ាំងសង់វីសថេនសិន. អរគុណបុរស!

សម្រាប់ហេតុផលបច្ចេកទេស, ពាក្យគន្លឹះមួយចំនួនត្រូវបានរក្សាទុកជាភាសាអង់គ្លេស. ខ្ញុំបានព្យាយាមធានានូវភាពដើមនៃអត្ថបទ, ប៉ុន្តែខ្ញុំសារភាពថាខ្ញុំត្រូវតែធ្វើការកែតម្រូវដើម្បីជួយសម្រួលដល់ការយល់ដឹងជាភាសារបស់យើង (ភី - ប៊ី). សូមស្វាគមន៍ចំពោះការកែតម្រូវឬសំណូមពរដើម្បីកែលម្អការបកប្រែ.

សេចក្តីផ្តើម

នេះមិនមែនជាការបង្រៀនភ្នំពេញប៉ុស្តិ៍ពីរបៀបប្រើហ្គីតទេ. ប្រសិនបើនេះជាអ្វីដែលអ្នកត្រូវការ, ខ្ញុំស្នើឱ្យមើល សៀវភៅដៃធ្វើហ្គីត. ហើយក៏មិនមែនជាគោលដៅរបស់យើងដើម្បីបង្ហាញអ្នកពីរបៀបធ្វើកំណែសូហ្វវែរដែរ, ក្នុងករណី​នេះ, រកមើល ការផ្លាស់ប្តូរស៊ីមេទ្រី.

នៅទីនេះសំណើរនេះគឺដើម្បីគ្រប់គ្រងការសហការរបស់ក្រុមក្នុងការបង្កើតសូហ្វវែរ. ដឹងថាពេលណាអ្នកមានអ្នកសរសេរកម្មវិធីច្រើន “ការផ្លាស់ប្តូរ” ក្នុងកូដប្រភពតែមួយ? នេះមានសារៈសំខាន់ក្នុងការពន្លឿនការអភិវឌ្ឍន៍, ប៉ុន្តែវាអាចធ្វើអោយឈឺក្បាលបានច្រើន (ការបាត់បង់និងដំណើរការឡើងវិញ) ប្រសិនបើមិនមានការត្រួតពិនិត្យ. ដើម្បីរារាំងអ្នកអភិវឌ្ឍន៍ម្នាក់ពីការសរសេរជាន់លើការងាររបស់អ្នកផ្សេងនិងធានាការអភិវឌ្ឍរីកចម្រើននិងរៀបចំ, កាត់បន្ថយទំនាស់និងការគ្រប់គ្រងកំណែសូហ្វវែរ, គឺថាយើងប្រើ Git និង សាខា ដើម្បី​អនុវត្ត​តាម.

គំរូសាខា

នៅក្នុងប្រកាសនេះខ្ញុំសូមបង្ហាញនូវគំរូនៃការអភិវឌ្ឍន៍ដែលខ្ញុំបានប្រើនៅក្នុងគំរោងមួយចំនួនរបស់ខ្ញុំ (ទាំងនៅកន្លែងធ្វើការនិងឯកជន) ជិត 1 ឆ្នាំមុន, ហើយនោះទទួលបានជោគជ័យយ៉ាងខ្លាំង. ខ្ញុំចង់សរសេរអំពីវាអស់រយៈពេលជាយូរមកហើយ, ប៉ុន្តែខ្ញុំមិនដែលរកឃើញពេលវេលាទំនេរទេ, សែន​ឆ្ងាយ. ខ្ញុំនឹងមិននិយាយអំពីព័ត៌មានលម្អិតរបស់គម្រោងទេ, គ្រាន់តែអំពីយុទ្ធសាស្រ្តសម្រាប់ សាខា និងការគ្រប់គ្រង ចេញផ្សាយ.

ម៉ូដែលត្រានេះទាំងស្រុងមិនមានទេ ហ្គីត ជាឧបករណ៍សម្រាប់ធ្វើកំណែកូដប្រភពរបស់យើងទាំងអស់. (តាមគោលបំណង, ប្រសិនបើអ្នកចាប់អារម្មណ៍ Git, ក្រុមហ៊ុន​របស់​យើង GoPrime ផ្តល់ជូន, ពេលវេលាពិតប្រាកដ, ការវិភាគទិន្នន័យមិនគួរឱ្យជឿមួយចំនួនសម្រាប់ការបង្កើនប្រសិទ្ធភាពវិស្វកម្មផ្នែកទន់)

ហេតុអ្វីបានជាហ្គ្រីត?

សម្រាប់ការពិភាក្សាហ្មត់ចត់អំពីគុណសម្បត្តិនិងគុណវិបត្តិរបស់ហ្គីតបើប្រៀបធៀបទៅនឹងប្រព័ន្ធគ្រប់គ្រងប្រភពកណ្តាល, រកមើល មួយ គេហទំព័រ. មានយ៉ាងខ្លាំង “សង្គ្រាម” នៅជុំវិញនោះ. ក្នុងនាមជាអ្នកអភិវឌ្ឍន៍, ខ្ញុំចូលចិត្ត Git ជាងឧបករណ៍ផ្សេងទៀតទាំងអស់ដែលមានសព្វថ្ងៃ. ហ្គីតបានផ្លាស់ប្តូរដោយមិនសង្ស័យនូវវិធីដែលអ្នកអភិវឌ្ឍន៍គិតអំពីការបង្កើត បញ្ចូលគ្នា ឬបង្កើតមួយ សាខា. ខ្ញុំមកពីពិភពបុរាណនៃ CVS / Subversion, កន្លែងណា បញ្ចូលគ្នា / សាខា វាជាអ្វីដែលអ្នកធ្វើបានតែម្ដងប៉ុណ្ណោះហើយវាមើលទៅគួរអោយខ្លាចបន្តិច (“ប្រយ័ត្នជម្លោះទំនាស់ផលប្រយោជន៍ បញ្ចូលគ្នា, ពួកគេខាំអ្នក!”).

ជាមួយហ្គីតសកម្មភាពទាំងនេះ [បញ្ចូលគ្នា / សាខា] គឺសាមញ្ញណាស់ហើយតំណាងអោយផ្នែកសំខាន់មួយនៃទម្លាប់ការងាររបស់យើង, ជឿ. ឧទាហរណ៍, ទេ សៀវភៅ ស៊ី។ អេ។ អេ។ / វិ, សាខា អ៊ី ការរួមបញ្ចូលគ្នា ត្រូវបានគ្របដណ្តប់ជាលើកដំបូងតែនៅក្នុងជំពូកបន្ទាប់ (សម្រាប់អ្នកប្រើកម្រិតខ្ពស់), ខណៈពេលដែលនៅក្នុងណាមួយ សៀវភៅនៅលើជី, នេះត្រូវបានគេមើលឃើញនៅក្នុងជំពូក 3 (មូលដ្ឋាន).

ជាផលវិបាកនៃភាពសាមញ្ញនិងលក្ខណៈច្រំដែលរបស់វា, សាខា អ៊ី ការរួមបញ្ចូលគ្នា លែងជាអ្វីដែលត្រូវខ្លាចហើយ. ជាការពិត, ឧបករណ៍ត្រួតពិនិត្យកំណែគួរតែជួយបង្កើតបញ្ចូលគ្នា និងបង្កើត សាខា លើសពីអ្វីទាំងអស់.

និយាយឱ្យបានគ្រប់គ្រាន់, តោះទៅគំរូអភិវឌ្ឍន៍. គំរូដែលខ្ញុំនឹងបង្ហាញនៅទីនេះគឺមិនមានអ្វីក្រៅពីសំណុំបែបបទដែលសមាជិកក្រុមនីមួយៗត្រូវតែអនុវត្តដើម្បីឈានដល់ដំណើរការអភិវឌ្ឍន៍កម្មវិធីដែលបានគ្រប់គ្រង.

វិមជ្ឈការ, ប៉ុន្តែនៅកណ្តាល

ការកំណត់រចនាសម្ព័ន្ធឃ្លាំងដែលយើងប្រើហើយដំណើរការបានល្អជាមួយគំរូនៃគំរូនេះ សាខា មានឃ្លាំងកណ្តាល. ចំណាំថាឃ្លាំងនេះមានតែ “យកជា” កណ្តាល (ព្រោះហ្គីតជាឌី។ ឌី។ ស៊ី [ចែកចាយប្រព័ន្ធត្រួតពិនិត្យជំនាន់], នៅក្នុងពាក្យផ្សេងទៀត, មិនមានអ្វីដូចជាឃ្លាំងកណ្តាលនៅកម្រិតបច្ចេកទេសទេ). យើងនឹងយោងទៅឃ្លាំងនេះ ប្រភពដើម, ដោយសារឈ្មោះនេះស៊ាំទៅនឹងអ្នកប្រើប្រាស់ Git ទាំងអស់.

អ្នកអភិវឌ្ឍន៍នីមួយៗធ្វើ ទាញ អ៊ី រុញ ទៅ ប្រភពដើម. ប៉ុន្តែលើសពីទំនាក់ទំនង ជំរុញ - ទាញ សម្រាប់មជ្ឈិម [ប្រភពដើម], អ្នកអភិវឌ្ឍន៍នីមួយៗក៏អាចលើកយកបានដែរ [ទាញ] ផ្លាស់ប្តូរពីគូផ្សេងទៀតដើម្បីបង្កើតជាអនុរង. ឧទាហរណ៍, នេះអាចមានប្រយោជន៍សម្រាប់ធ្វើការរួមគ្នាជាមួយអ្នកអភិវឌ្ឍន៍ពីររឺច្រើននាក់លើមុខងារថ្មីដ៏អស្ចារ្យ, ផ្ញើពីមុន [ជំរុញ] កំពុងដំណើរការសម្រាប់ឯកសារ ប្រភពដើម. នៅក្នុងរូបភាពខាងលើ, មានអនុរងរបស់អាលីសនិងលោក Bob, អាលីសអ៊ី David, អ៊ីក្លែរនិងដាវីឌ.

បច្ចេកទេស, នេះមានន័យថាគ្មានអ្វីក្រៅពីអាលីសបានកំណត់ហ្គីតពីចម្ងាយដែលហៅថាបូ, ចង្អុលទៅឃ្លាំងរបស់លោក Bob, និងច្រាសមកវិញ.

សាខាសំខាន់ៗ

នៅផ្ទៃខាងក្រោយ, គំរូនៃការអភិវឌ្ឍនេះត្រូវបានជំរុញដោយគំរូដែលមានស្រាប់នៅទីនោះ. ឃ្លាំងកណ្តាលមានពីរសាខា [សាខា] នាយកសាលាជាមួយនឹងជីវិតដែលគ្មានទីបញ្ចប់:

  • មេ
  • អភិវឌ្ឍ

នេះ មេសាខា ក្នុង ប្រភពដើម គួរស្គាល់អ្នកប្រើ Git ទាំងអស់. ប៉ារ៉ាឡែលទៅ មេសាខា, មានមួយទៀត សាខា បានហៅ អភិវឌ្ឍ.

យើងពិចារណា ប្រភពដើម / មេ ជាសាខាដ៏សំខាន់ដែលជាប្រភពកូដនៃ HEAD តែងតែឆ្លុះបញ្ចាំងពីរដ្ឋ ផលិតកម្មត្រៀមខ្លួនជាស្រេច [ត្រៀមខ្លួនសម្រាប់ផលិតកម្ម].

យើងពិចារណា ដើមកំណើត / អភិវឌ្ឍ ក្នុងនាមជា សាខា កន្លែងដែលកូដប្រភពរបស់ HEAD តែងតែឆ្លុះបញ្ចាំងពីរដ្ឋមួយដែលមានការផ្លាស់ប្តូរការអភិវឌ្ឍន៍ចុងក្រោយដែលត្រូវផ្តល់ជូននៅក្នុងជំនាន់បន្ទាប់. អ្នកខ្លះនឹងហៅវា “សាខា នៃការធ្វើសមាហរណកម្ម”. នេះគឺជាកន្លែងដែលការស្ថាបនាដ៏សាហាវបំផុតកើតឡើង.

នៅពេលកូដប្រភពចូល សាខាអភិវឌ្ឍ ឈានដល់ចំណុចមួយដែលមានស្ថេរភាពនិងត្រៀមខ្លួនជាស្រេចដើម្បីចាប់ផ្តើម [បានចេញផ្សាយ], រាល់ការផ្លាស់ប្តូរត្រូវតែបញ្ចូលគ្នា [បញ្ចូលគ្នា] ត្រឡប់ទៅ មេសាខា ហើយបន្ទាប់មកត្រូវបានសម្គាល់ដោយលេខកំណែ [ការដោះលែង]. វិធីនេះត្រូវបានធ្វើយ៉ាងលម្អិត, នឹងត្រូវពិភាក្សានៅពេលក្រោយ.

ហេតុនេះហើយបានជា, រាល់ការផ្លាស់ប្តូរត្រូវបានដាក់បញ្ចូល [បញ្ចូលគ្នា] ត្រលប់ទៅ មេ, កំណែថ្មីត្រូវបានបង្កើត [បានចេញផ្សាយ], តាម​និយមន័យ. យើងព្យាយាមយ៉ាងម៉ឺងម៉ាត់អំពីវា, បន្ទាប់មក, តាមទ្រឹស្តី, យើងថែមទាំងអាចប្រើស្គ្រីបទៀតផង ទំពក់ ពី Git ដើម្បីបង្កើតនិងអាប់ឡូតកម្មវិធីរបស់យើងទៅម៉ាស៊ីនមេផលិតកម្មនៅពេលណាដែលមាន ប្តេជ្ញា ទេ មេ.

សាខាជំនួយ

ក្រៅពីនេះ សាខា មេ, មេ អ៊ី អភិវឌ្ឍ, គំរូអភិវឌ្ឍន៍របស់យើងប្រើប្រភេទផ្សេងៗគ្នា សាខា ជួយដល់ការអភិវឌ្ឍដំណាលគ្នាក្នុងចំណោមសមាជិកក្រុម, អ្វី 1) សម្របសម្រួលការតាមដាននៃមុខងារថ្មីៗ [លក្ខណៈពិសេស], 2) រៀបចំសំរាប់ចែកចាយជំនាន់ថ្មី [ការដោះលែង] អ៊ី 3) ជួយកែតំរូវការបរាជ័យនៃផលិតកម្ម [hotfix]. មិនដូច សាខា មេ, estes សាខា មានអាយុកាលខ្លី, ដូចដែលពួកគេនឹងត្រូវដកចេញជាយថាហេតុ.

ប្រភេទផ្សេងៗគ្នា សាខា [ជំនួយការ] តើយើងអាចប្រើអ្វីបាន, គឺ:

  • សាខាពិសេស
  • បញ្ចោញសាខា
  • សាខា Hotfix

ទាំងនេះនីមួយៗ សាខា មានគោលបំណងជាក់លាក់ហើយត្រូវបានចងភ្ជាប់ដោយច្បាប់តឹងរឹង, ដូច្នេះ, សាខា អាចផ្តល់ឱ្យកើនឡើង សាខា គឺថា សាខា ត្រូវតែបញ្ចូលគ្នា [បញ្ចូលគ្នា] ដើម្បីគោលដៅរបស់អ្នក. យើងនឹងឃើញពួកគេម្នាក់ៗ [សាខា] ក្នុងមួយរំពេច.

តាមទស្សនៈបច្ចេកទេស, ទាំងនោះ សាខា មិនត្រូវបានពិចារណា “ពិសេស”. ប្រភេទនីមួយៗនៃ សាខា ត្រូវបានចែកប្រភេទតាមរបៀបដែលយើងប្រើពួកវា. ទីបំផុត, គឺគ្រាន់តែសាមញ្ញ សាខា នៃហ្គីតចាស់ល្អ.

សាខាពិសេស

[លក្ខណៈពិសេស = លក្ខណៈពិសេស / មុខងារ]

– អាចសាខា [សាខា] ពី:
អភិវឌ្ឍ
– វាគួរតែបញ្ចូលគ្នា [បញ្ចូលគ្នា] ជាថ្មីម្តងទៀតនេះ:
អភិវឌ្ឍ
– ការដាក់ឈ្មោះអនុសញ្ញា សាខា:
អ្វីទាំងអស់, លើកលែងតែ មេ, អភិវឌ្ឍ, ការដោះលែង - *, ឬ hotfix- *

នេះ លក្ខណៈពិសេសសាខា (ឬពេលខ្លះគេហៅ សាខាប្រធានបទ) ត្រូវបានប្រើដើម្បីអភិវឌ្ឍលក្ខណៈពិសេស / មុខងារថ្មីៗសម្រាប់ការចេញផ្សាយនាពេលអនាគតឬអនាគត. នៅពេលចាប់ផ្តើមការអភិវឌ្ឍន៍ក លក្ខណៈពិសេស, កំណែគោលដៅដែលលក្ខណៈពិសេសនេះនឹងត្រូវបានដាក់បញ្ចូលអាចមិនត្រូវបានគេដឹងនៅពេលនេះទេ.

ខ្លឹមសារនៃក លក្ខណៈពិសេសសាខា គឺថាវាមានខណៈពេលដែល លក្ខណៈពិសេស គឺស្ថិតនៅក្នុងការអភិវឌ្ឍន៍, ប៉ុន្តែនៅទីបំផុតវានឹងត្រូវបានបញ្ចូល [បញ្ចូលគ្នា] ត្រលប់ទៅ អភិវឌ្ឍ (ដើម្បីបន្ថែមថ្មី លក្ខណៈពិសេស ទៅបន្ទាប់ ការដោះលែង) ឬបោះបង់ចោល (ក្នុងករណីមានការពិសោធន៍មិនបានជោគជ័យ).

សាខាពិសេស ជាទូទៅមានតែនៅក្នុងឃ្លាំងប៉ុណ្ណោះ អភិវឌ្ឍ, មិន​នៅក្នុង ប្រភពដើម.

ការបង្កើតសាខាលក្ខណៈពិសេស

$ git checkout -ខ myfeature អភិវឌ្ឍ
# Switched to a new branch "myfeature"

បញ្ចូលមុខងារដែលបានបញ្ចប់ទៅអភិវឌ្ឍ

លក្ខណៈពិសេស បញ្ចប់អាចត្រូវបានបញ្ចូលគ្នា[បញ្ចូលគ្នា] ជា សាខាអភិវឌ្ឍ ដើម្បីបន្ថែមពួកគេទៅមួយបន្ទាប់ទៀត ការដោះលែង.

$ git checkout អភិវឌ្ឍ
# ប្តូរទៅសាខា 'អភិវឌ្ឍ'
$ ទៅចូលគ្នា --ទេ-ff myfeature
# ធ្វើឱ្យទាន់សម័យ ea1b82a..05e9557
# (សេចក្តីសង្ខេបនៃការផ្លាស់ប្តូរ)
# $ សាខា git -d myfeature
# សាខាដែលបានលុបចោល (គឺ ០៥e៩៥៥៧).
$ ប្រភពដើមជំរុញ git អភិវឌ្ឍ

ទង់មួយ –no-ff បណ្តាលឱ្យបញ្ចូលគ្នា [បញ្ចូលគ្នា] បង្កើតថ្មីជានិច្ច ប្តេជ្ញា, ទោះបីជាការបញ្ចូលគ្នាអាចត្រូវបានអនុវត្តជាមួយក ទៅមុខយ៉ាងលឿន [ff]. វាចៀសវាងការបាត់បង់ព័ត៌មានអំពីប្រវត្តិនៃអត្ថិភាពរបស់ក សាខាពិសេស, ដាក់ជាក្រុមទាំងអស់ ប្រព្រឹត្ត ដែលត្រូវបានបន្ថែមទៅ លក្ខណៈពិសេស. ប្រៀបធៀប:

មិនមែនជាករណីចុងក្រោយទេ [នៃតួលេខខាងលើ], វាមិនអាចទៅរួចទេក្នុងការមើលពីប្រវត្តិជីជី ប្រព្រឹត្ត ត្រូវបានអនុវត្តនៅក្នុងក លក្ខណៈពិសេស; អ្នកត្រូវអានសារកំណត់ហេតុទាំងអស់ដោយដៃ. ត្រឡប់ក លក្ខណៈពិសេស ទាំងមូល (នៅក្នុងពាក្យផ្សេងទៀត, ក្រុមនៃ ប្រព្រឹត្ត), វាជាការឈឺក្បាលយ៉ាងពិតប្រាកដនៅក្នុងស្ថានភាពចុងក្រោយ, ខណៈពេលដែលវាត្រូវបានធ្វើបានយ៉ាងងាយប្រសិនបើទង់ –no-ff ត្រូវបានប្រើ.

ស៊ីម, នេះនឹងបង្កើតវត្ថុមួយចំនួនបន្ថែមទៀតនៃ ប្រព្រឹត្ត (ទទេ), ប៉ុន្តែការចំណេញគឺធំជាងថ្លៃដើមទៅទៀត.

បញ្ចោញសាខា

[ការចេញផ្សាយ = ការចេញផ្សាយ / ការផ្តល់ / កំណែ]

– អាចសាខា [សាខា] ពី:
អភិវឌ្ឍ
– វាគួរតែបញ្ចូលគ្នា [បញ្ចូលគ្នា] ជាថ្មីម្តងទៀតនេះ:
អភិវឌ្ឍ អ៊ី មេ
– ការដាក់ឈ្មោះអនុសញ្ញា សាខា:
ការដោះលែង - *

នេះ ចេញសាខា ជួយក្នុងការរៀបចំជំនាន់ផលិតកម្មថ្មី [ការចេញផ្សាយផលិតកម្ម]. ពួកគេអនុញ្ញាតឱ្យអ្នកដាក់ដំណក់ទឹកនៅនាទីចុងក្រោយ. លើសពីនេះទៅទៀត, ពួកគេបានអនុញ្ញាតឱ្យកែតម្រូវតូចមួយនៃ កំហុស និងនិយមន័យនៃ ទិន្នន័យមេតា សម្រាប់ ការដោះលែង (លេខកំណែ, កាលបរិច្ឆេទចងក្រង, ល). ដោយធ្វើកិច្ចការទាំងអស់នេះក្នុងមួយ សាខាចេញ, នេះ បង្កើតសាខា រក្សាភាពស្អាតស្អំដើម្បីទទួល លក្ខណៈពិសេស ធំបន្ទាប់ ការដោះលែង [កំណែ].

ពេលវេលាសំខាន់ដើម្បីបង្កើតថ្មី សាខាចេញ សាខាពី អភិវឌ្ឍ គឺនៅពេលដែល អភិវឌ្ឍ វារួចទៅហើយ (ស្ទើរតែ) ឆ្លុះបញ្ចាំងពីស្ថានភាពដែលចង់បានរបស់ថ្មី ការដោះលែង [កំណែ]. ទាំងអស់ លក្ខណៈពិសេស បេក្ខជនសម្រាប់ ការដោះលែង ត្រូវបានសាងសង់ត្រូវតែបញ្ចូល [បញ្ចូលគ្នា] ទៅ អភិវឌ្ឍ នៅ​ពេលនេះ. នេះ លក្ខណៈពិសេស ប្រឈមមុខ ចេញផ្សាយ អនាគតគួរតែរំពឹងថានឹងមានបន្ទាប់ ការដោះលែង [កំណែ].

វាពិតជានៅដើមដំបូងនៃក សាខាចេញ បន្ទាប់ ការដោះលែង ទទួលបានលេខកំណែ – មិនមែនពីមុនទេ. រហូតមកដល់ពេលនេះ, នេះ បង្កើតសាខា បានឆ្លុះបញ្ចាំងពីការផ្លាស់ប្តូរ “ការចេញផ្សាយបន្ទាប់” [កំណែបន្ទាប់], ប៉ុន្តែវាមិនច្បាស់ទេថាតើនេះ “កំណែបន្ទាប់” វានឹងបញ្ចប់ 0.3 ឬ 1.0, រហូតដល់ សាខាចេញ ចាប់ផ្តើម. ការសម្រេចចិត្តនេះត្រូវបានធ្វើឡើងនៅដើមនៃព្រះគម្ពីរមរមន សាខាចេញ និងត្រូវបានអនុវត្តដោយច្បាប់គម្រោងនៅលើកំណែ [ស្នើឱ្យមើលអំពី “ការផ្លាស់ប្តូរស៊ីមេទ្រី“].

ការបង្កើតសាខាដោះលែង

នេះ ចេញសាខា ត្រូវបានបង្កើតចេញពីឯកសារ បង្កើតសាខា. ឧទាហរណ៍, តោះនិយាយជំនាន់ 1.1.5 គឺជាជំនាន់ផលិតកម្មបច្ចុប្បន្នហើយយើងមានភាពអស្ចារ្យ ការដោះលែង មកដល់. ឬស្ថានភាពនៃ អភិវឌ្ឍ វាជាការត្រៀមខ្លួនជាស្រេចសម្រាប់មួយ “កំណែបន្ទាប់” [ការចេញផ្សាយបន្ទាប់] ហើយយើងបានសំរេចថាវានឹងក្លាយជាជំនាន់ 1.2 (ជាជាង 1.1.6 ឬ 2.0). បន្ទាប់មក, យើងចែកចេញនិងផ្តល់ឱ្យ សាខាចេញ ឈ្មោះដែលឆ្លុះបញ្ចាំងពីលេខកំណែថ្មី:

$ git checkout --1.2 អភិវឌ្ឍ
# Switched to a new branch "release-1.2"
$ ./រលាក់-ជំនាន់.sh 1.2
# ឯកសារត្រូវបានកែប្រែដោយជោគជ័យ, កំណែបានបុកទៅ 1.2.
$ git ប្តេជ្ញាចិត្ត -មួយ -m "Bumped version number to 1.2"
# [release-1.2 74d9424] វាយលេខកំណែទៅ 1.2
# 1 បានផ្លាស់ប្ដូរឯកសារ, 1 ការបញ្ចូល(+), 1 ការលុប(-)

បន្ទាប់ពីបង្កើតថ្មី សាខា ហើយចូលប្រើវា, យើងចូលទៅក្នុងលេខកំណែ. នៅទីនេះ, bump-version.sh គឺជាស្គ្រីបសែលដែលផ្លាស់ប្តូរឯកសារចំលងដែលដំណើរការដើម្បីឆ្លុះបញ្ចាំងពីជំនាន់ថ្មី. (កំប៉ុងនេះ, ច្បាស់ណាស់, ជាការផ្លាស់ប្តូរដោយដៃ – ចំណុចគឺថាឯកសារខ្លះផ្លាស់ប្តូរ។) បន្ទាប់មក, ត្រូវបានធ្វើរួច ប្តេជ្ញា លេខកំណែដែលបានកែប្រែ.

ថ្មីនេះ សាខា អាចមាននៅទីនោះមួយរយៈ, រហូតដល់ ការដោះលែង ត្រូវបានដោះលែងយ៉ាងច្បាស់លាស់. ក្នុងអំឡុងពេលនេះ, ការកែកំហុសអាចត្រូវបានអនុវត្តនៅក្នុងនេះ សាខា (ជំនួស​អោយ បង្កើតសាខា). ការបន្ថែមថ្មីនិងធំ លក្ខណៈពិសេស នៅទីនេះត្រូវបានហាមឃាត់យ៉ាងតឹងរ៉ឹង. ពួកគេត្រូវតែបញ្ចូលគ្នា [បញ្ចូលគ្នា] ក្នុង អភិវឌ្ឍ អ៊ី, ដូចនេះ, រង់ចាំសម្រាប់ធំបន្ទាប់ ការដោះលែង.

បញ្ចប់សាខាដោះលែង

នៅពេល​ដែល សាខាចេញ ត្រៀមខ្លួនជាស្រេចដើម្បីក្លាយជាកំណែពិត, សកម្មភាពខ្លះត្រូវធ្វើ. ដំបូង, នេះ សាខាចេញ ត្រូវបានបញ្ចូលទៅក្នុង មេ (ចាប់តាំងពីគ្នា ប្តេជ្ញា ទេ មេ គឺជាកំណែថ្មីតាមនិយមន័យ, ចាំថាប្រសិនបើ). បន្ទាប់មក, នោះ ប្តេជ្ញា ទេ មេ គួរតែត្រូវបានពិនិត្យដើម្បីសម្រួលដល់ឯកសារយោងនាពេលអនាគត. ទីបំផុត, ការផ្លាស់ប្តូរដែលបានធ្វើចំពោះឯកសារ សាខាចេញ ត្រូវការបញ្ចូលចូលគ្នា [បញ្ចូលគ្នា] ជាថ្មីម្តងទៀតសម្រាប់ អភិវឌ្ឍ, ដូច្នេះថា ចេញផ្សាយ អនាគតក៏មានផងដែរនូវការកែកំហុសទាំងនេះ.

ជំហានពីរដំបូងនៅហ្គីត:

$ មេឆែកហ្គ្រីត
# ប្តូរទៅសាខា 'មេ'
$ ទៅចូលគ្នា --ទេ-ff ការចេញផ្សាយ-1.2
# បញ្ចូលគ្នាបង្កើតឡើងដោយការហៅខ្លួនឯង.
# (សេចក្តីសង្ខេបនៃការផ្លាស់ប្តូរ)
$ ស្លាក git -មួយ 1.2

នេះ ការដោះលែង ឥឡូវត្រូវបានបញ្ចប់និងគ្រោងសម្រាប់ជាឯកសារយោងនាពេលអនាគត.

ការកត់សម្គាល់: អ្នកក៏អាចប្រើទង់ -s ឬ -u ដើម្បីចុះហត្ថលេខាលើស្លាករបស់អ្នកជាកូដ.

ដើម្បីរក្សាការផ្លាស់ប្តូរដែលបានធ្វើចំពោះឯកសារ សាខាចេញ, យើងត្រូវដាក់វាបញ្ចូលគ្នាវិញ អភិវឌ្ឍ. គ្មាន Git:

$ git checkout អភិវឌ្ឍ
# ប្តូរទៅសាខា 'អភិវឌ្ឍ'
$ ទៅចូលគ្នា --ទេ-ff ការចេញផ្សាយ-1.2
# បញ្ចូលគ្នាបង្កើតឡើងដោយការហៅខ្លួនឯង.
# (សេចក្តីសង្ខេបនៃការផ្លាស់ប្តូរ)

ជំហាននេះអាចនាំឱ្យមានជម្លោះបញ្ចូលគ្នា (ប្រហែលជាទៅ, នៅពេលដែលយើងផ្លាស់ប្តូរលេខកំណែ). ក្នុងករណីបញ្ជាក់, ជួសជុលនិងធ្វើ ប្តេជ្ញា.

ឥឡូវនេះ, ដែលយើងពិតជាបានបញ្ចប់, នេះ សាខាចេញ អាចត្រូវបានយកចេញ, ព្រោះយើងមិនត្រូវការវាទៀតទេ:

$ សាខា git --1.2
# ការលុបសាខាចោល -២ (គឺ ff452fe).

សាខា Hotfix

– អាចសាខា [សាខា] ពី:
មេ
– វាគួរតែបញ្ចូលគ្នា [បញ្ចូលគ្នា] ជាថ្មីម្តងទៀតនេះ:
អភិវឌ្ឍ អ៊ី មេ
– ការដាក់ឈ្មោះអនុសញ្ញា សាខា:
hotfix- *

នេះ សាខា Hotfix គឺស្រដៀងគ្នាទៅនឹងឯកសារ ដោះលែងសាខា, ដូចដែលពួកគេត្រូវបានបម្រុងទុកផងដែរដើម្បីរៀបចំកំណែផលិតកម្មថ្មី, ទោះបីជាមិនបានគ្រោងទុក. ពួកវាកើតឡើងពីតម្រូវការដើម្បីធ្វើសកម្មភាពភ្លាមៗបន្ទាប់ពីស្ថានភាពដែលមិនចង់បាននៃកំណែផលិតកម្ម [កំពុង​ប្រើ]. នៅពេលមានកំហុសធ្ងន់ធ្ងរកើតឡើងនៅក្នុងកំណែផលិតកម្ម, ត្រូវតែដោះស្រាយជាបន្ទាន់, បន្ទាប់មកមួយ សាខា hotfix អាចត្រូវបានទាញយកពីស្លាកដែលសម្គាល់កំណែផលិតកម្មដែលមានស្រាប់នៅក្នុង សាខាមេ.

ខ្លឹមសារគឺការងាររបស់សមាជិកក្រុម (ទេ បង្កើតសាខា) បន្ត​ទៀត, ខណៈពេលដែលនរណាម្នាក់ផ្សេងទៀតកំពុងរៀបចំការជួសជុលយ៉ាងឆាប់រហ័សនៃការបរាជ័យផលិតកម្ម.

ការបង្កើតសាខា hotfix

នេះ សាខា hotfix ត្រូវបានបង្កើតចេញពីឯកសារ សាខាមេ. ឧទាហរណ៍, សន្មតថាកំណែ 1.2 ជាកំណែបច្ចុប្បន្ននៃការចេញផ្សាយផលិតកម្មដែលកំពុងដំណើរការហើយមានបញ្ហាដោយសារមានកំហុសធ្ងន់ធ្ងរ. ការផ្លាស់ប្តូរនៅក្នុង អភិវឌ្ឍ ទុកឱ្យនៅតែមិនស្ថិតស្ថេរ. បន្ទាប់មកយើងអាចបែងចែកមួយ សាខា hotfix ហើយចាប់ផ្តើមដោះស្រាយបញ្ហា:

$ git checkout -ខ hotfix-1.2.1 មេ
# Switched to a new branch "hotfix-1.2.1"
$ ./រលាក់-ជំនាន់.sh 1.2.1
# ឯកសារត្រូវបានកែប្រែដោយជោគជ័យ, កំណែបានបុកទៅ 1.2.1.
$ git ប្តេជ្ញាចិត្ត -មួយ -m "Bumped version number to 1.2.1"
# [hotfix-1.2.1 41e61bb] វាយលេខកំណែទៅ 1.2.1
# 1 បានផ្លាស់ប្ដូរឯកសារ, 1 ការបញ្ចូល(+), 1 ការលុប(-)

កុំភ្លេចផ្លាស់ប្តូរលេខកំណែបន្ទាប់ពីពន្លក!

បន្ទាប់មក, កែកំហុសហើយធ្វើវា ប្តេជ្ញា ការកែក្នុងមួយឬច្រើន ប្តេជ្ញា បំបែក.

$ git ប្តេជ្ញាចិត្ត -m "Fixed severe production problem"
# [hotfix-1.2.1 abbe5d6] ដោះស្រាយបញ្ហាផលិតកម្មធ្ងន់ធ្ងរ
# 5 បានផ្លាស់ប្ដូរឯកសារ, 32 ការបញ្ចូល(+), 17 ការលុប(-)

បញ្ចប់សាខាហ្វាយឆាយ

ពេលចប់, នេះ ជួសជុល​កំហុស ត្រូវការបញ្ចូលទៅក្នុង មេ, ប៉ុន្តែវាក៏ចាំបាច់ត្រូវបញ្ចូលម្តងទៀតដែរ អភិវឌ្ឍ, ដើម្បីធានាថាឯកសារ ជួសជុល​កំហុស ត្រូវបានរួមបញ្ចូលផងដែរនៅក្នុងកំណែបន្ទាប់. នេះគឺស្រដៀងនឹងផ្លូវដែរ ដោះលែងសាខា ត្រូវបានបញ្ចប់.

ដំបូង, ធ្វើឱ្យទាន់សម័យឯកសារ មេ e ថ្ងៃមួយ ការដោះលែង [ពិនិត្យរដូវក្តៅ]:

$ មេឆែកហ្គ្រីត
# ប្តូរទៅសាខា 'មេ'
$ ទៅចូលគ្នា --ទេ-ff hotfix-1.2.1
# បញ្ចូលគ្នាបង្កើតឡើងដោយការហៅខ្លួនឯង.
# (សេចក្តីសង្ខេបនៃការផ្លាស់ប្តូរ)
$ ស្លាក git -មួយ 1.2.1

ការកត់សម្គាល់: អ្នកក៏អាចប្រើទង់ -s ឬ -u ដើម្បីចុះហត្ថលេខាលើស្លាករបស់អ្នកជាកូដ.

បន្ទាប់មក, រួមបញ្ចូល ជួសជុល​កំហុស ទេ អភិវឌ្ឍ ផងដែរ:

$ git checkout អភិវឌ្ឍ
# ប្តូរទៅសាខា 'អភិវឌ្ឍ'
$ ទៅចូលគ្នា --ទេ-ff hotfix-1.2.1
# បញ្ចូលគ្នាបង្កើតឡើងដោយការហៅខ្លួនឯង.
# (សេចក្តីសង្ខេបនៃការផ្លាស់ប្តូរ)

ការលើកលែងតែមួយគត់ចំពោះច្បាប់នៅទីនេះគឺថា, នៅពេលដែលមាន សាខាចេញ កំពុង​ដំណើរការ, ការផ្លាស់ប្តូរនៅក្នុង hotfix ចាំបាច់ត្រូវបញ្ចូលចូលគ្នាសម្រាប់បញ្ហានេះ សាខាចេញ, ជាជាង អភិវឌ្ឍ. បញ្ចូលគ្នា ជួសជុល​កំហុស ទេ សាខាចេញ នឹងធ្វើឱ្យ ជួសជុល​កំហុស ត្រូវបានបញ្ចូលទៅក្នុង អភិវឌ្ឍ ផងដែរ, នៅពេល​ដែល សាខាចេញ ត្រូវបានបញ្ចប់. (ប្រសិនបើធ្វើការ អភិវឌ្ឍ ទាមទារភ្លាមៗ ជួសជុល​កំហុស និងមិនអាចរង់ចាំរហូតដល់ សាខាចេញ ត្រូវបានបញ្ចប់, អ្នកអាចបញ្ចូលចូលគ្នាដោយសុវត្ថិភាព ជួសជុល​កំហុស សម្រាប់ deveolp ផងដែរ។)

ទីបំផុត, យកឯកសារ សាខា បណ្តោះអាសន្ន:

$ សាខា git -ឃ hotfix-1.2.1
# សាខាដែលបានលុប hotfix-1.2.1 (គឺ abbe5d6).

ប្រវត្តិរូប

ទោះបីជាមិនមានអ្វីប្លែកពីគំរូសាខានេះក៏ដោយ, តួលេខនៅដើមដំបូងនៃកាសែតភ្នំពេញប៉ុស្តិ៍អាចមានប្រយោជន៍ខ្លាំងណាស់នៅក្នុងគម្រោងរបស់យើង. វាបង្ហាញពីគំរូផ្លូវចិត្តងាយយល់និងអនុញ្ញាតឱ្យសមាជិកក្រុមអភិវឌ្ឍការយល់ដឹងរួម សាខា អ៊ី ការដោះលែង.

តួលេខជា PDF ដែលមានគុណភាពខ្ពស់ត្រូវបានផ្តល់ជូននៅលើប្លក់នៃប្រកាសដើម: http://nvie.com/posts/a-successful-git-branching-model/ [ឬតំណទាញយកខាងក្រោម]. ទៅមុខហើយដាក់វានៅលើជញ្ជាំងសម្រាប់ឯកសារយោងរហ័សគ្រប់ពេល.

ការចូលដំណើរការសរុប: 10275

មតិយោបល់មួយលើ “មួយម៉ូដែលទទួលបានជោគជ័យនៃសាខាក្នុង Git

  1. កំណើត Deivson បាននិយាយថា::

    នៅរសៀលថ្ងៃល្អ, ខ្ញុំដឹងថាត្រូវបានគេបង្កើតឡើងដំបូង Git លីនុចប៉ុន្តែនៅពេលសម្រាប់និយាយអំពីយួរតាមខ្លួនបាន, ខ្ញុំឆ្ងល់ប្រសិនបើ Git POSIX MSIS ដំណើរការលើនិងបង្អួច??

ទុកឱ្យឆ្លើយតបមួយ

អាសយដ្ឋានអ៊ីមែលរបស់អ្នកនឹងមិនត្រូវបានបោះពុម្ភ. វាលដែលត្រូវការត្រូវបានសម្គាល់ដោយ *