ហេតុអ្វីបានជា git log បង្ហាញអាថ៌កំបាំងសូម្បីតែបន្ទាប់ពីពួកវាត្រូវបាន "លុបចោល"
ការលុបបន្ទាត់ចេញពីឯកសារ និង commitការផ្លាស់ប្តូរនេះពិតជាមិនលុបទិន្នន័យរសើបចេញពីឃ្លាំងរបស់អ្នកទេ។ ប្រសិនបើអាថ៌កំបាំងនោះ កូនសោ API លិខិតសម្គាល់ ឬថូខឹន ធ្លាប់មាន committed វាស្ថិតនៅក្នុងប្រវត្តិ Git របស់អ្នក។ អ្នកណាដែលកំពុងដំណើរការ git log-p, git បង្ហាញឬត្រួតពិនិត្យភាពខុសគ្នាពីអតីតកាល commits នៅតែអាចទាញយកវាបាន។
ទោះបីជាអ្នកសរសេរជាន់លើឯកសារ ឬជំនួសតម្លៃក៏ដោយ កំណត់ហេតុ git រក្សាពូជពង្សពេញលេញនៃការផ្លាស់ប្ដូរនីមួយៗ។ នេះគឺតាមការរចនា។ គំរូទាំងមូលរបស់ Git គឺផ្អែកលើភាពមិនអាចផ្លាស់ប្ដូរបាន commit ប្រវត្តិសាស្ត្រ និងច្បាប់ចម្លងដែលបានចែកចាយ។ ដូច្នេះ លុះត្រាតែអ្នកសរសេរប្រវត្តិសាស្ត្រឡើងវិញយ៉ាងច្បាស់លាស់ អាថ៌កំបាំងរបស់អ្នកនៅតែមាននៅទីនោះ។ នេះជាករណីជាក់ស្តែងមួយ៖
⚠️ ឧទាហរណ៍អប់រំ កុំដំណើរការក្នុងផលិតកម្ម
យឺតពេលហើយ។ កំណត់ហេតុ git នៅតែបង្ហាញគន្លឹះនោះនៅក្នុងដំបូង commit.
ការយល់ច្រឡំជុំវិញ git stash និង git rebase
អ្នកអភិវឌ្ឍន៍ជាច្រើនសន្មតថា កន្លែងរក្សាទុក git ជួយលាក់ ឬសម្អាតអាថ៌កំបាំង។ មិនពិតទេ។ កន្លែងរក្សាទុក git មានតែធ្នើរ ថតឯកសារការងារ ផ្លាស់ប្តូរជាបណ្ដោះអាសន្ន; វាមិនដែលប៉ះ commit ប្រវត្តិសាស្ត្រ។ ប្រសិនបើអាថ៌កំបាំងមួយធ្លាប់មាន committed ការលាក់ការផ្លាស់ប្តូរនៅពេលក្រោយមិនជួយសម្អាតវាទេ។
អំពីអ្វី ការបង្កើតមូលដ្ឋានឡើងវិញរបស់ gitខណៈពេលដែលវាអាចសរសេរប្រវត្តិសាស្ត្រឡើងវិញបាន វាត្រូវតែធ្វើឡើងមុនពេលcisអេលី។ ទើបតែរត់ git rebase -i និងការរៀបចំឡើងវិញ ឬការច្របាច់ commits មិនលុបអាថ៌កំបាំងទេ លុះត្រាតែអ្នកកែសម្រួល ឬទម្លាក់វាចោលដោយច្បាស់លាស់។ ហើយប្រសិនបើសូម្បីតែក្លូន ឬសមមួយមានជាមួយឯកសារដើម commitស, អាថ៌កំបាំងរបស់អ្នកនៅតែបន្ត។
អ្វីដែលអាក្រក់ជាងនេះទៅទៀត ការបង្កើតមូលដ្ឋានឡើងវិញដោយមិនបង្ខំឱ្យបានត្រឹមត្រូវ ឬការសម្របសម្រួលឡើងវិញជាមួយអ្នកសហការ អាចណែនាំឡើងវិញនូវព័ត៌មានសម្ងាត់ដែលបានបង្ហាញតាមរយៈការបញ្ចូលគ្នា។
⚠️ ឧទាហរណ៍អប់រំ កុំប្រើក្នុងបរិយាកាសពិត
⚠️ ឧទាហរណ៍អប់រំ កុំដំណើរការលើឃ្លាំងផលិតកម្ម
កែសម្រួល commit មានអាថ៌កំបាំងនេះ ប៉ុន្តែភ្លេចលុបវាចេញ។ ដែន កំណត់ហេតុ git អាច រកមើល ស្អាតជាងមុន ប៉ុន្តែខ្លឹមសាររសើបនៅតែអាចស្ដារឡើងវិញបាន។
ហានិភ័យក្នុងពិភពលោកពិតពីលិខិតសម្គាល់ដែលត្រូវបានបំភ្លេចចោលនៅក្នុងប្រវត្តិ Git
នេះមិនមែនជាទ្រឹស្តីទេ។ អ្នកវាយប្រហារស្កេនឃ្លាំងសាធារណៈ និងឯកជនយ៉ាងសកម្មដើម្បីស្វែងរកអាថ៌កំបាំងដែលលាក់ខ្លួននៅក្នុង commit ប្រវត្តិ។ GitHub forks, mirror repos និង cached CI/CD pipelineទាំងអស់អាចលាក់បាំងសញ្ញាសម្ងាត់ដែលត្រូវបានបំភ្លេចចោលទាំងនោះ។
- សោ API ដែលលេចធ្លាយពីឯកសារចាស់ កំណត់ហេតុ git បាននាំឱ្យមានការគិតថ្លៃរាប់ពាន់លើ cloud សម្រាប់ក្រុមហ៊ុនចាប់ផ្តើមអាជីវកម្មមួយ។
- ថូខឹន OAuth committed ដែលបន្ទាប់មកត្រូវបាន "លុប" ត្រូវបានប្រើដើម្បីលួចយកគណនីអ្នកប្រើប្រាស់។
- អាថ៌កំបាំងដែលត្រូវបានកប់យ៉ាងជ្រៅនៅក្នុងគម្រោងប្រភពបើកចំហបានបង្កឱ្យមានឧប្បត្តិហេតុសន្តិសុខធំៗ។
បញ្ហាទាំងនេះមានទំហំ CI/CDការងារនីមួយៗដែលចម្លង repo ដំណើរការ កំណត់ហេតុ git នៅក្រោមក្រណាត់ ហើយវត្ថុបុរាណសាងសង់នីមួយៗអាចរួមបញ្ចូលដាននៃអាថ៌កំបាំងដែលបានបង្ហាញ។
ការសម្អាតទិន្នន័យរសើបជាមួយ git filter-repo
ប្រសិនបើការខូចខាតកើតឡើង ឧបករណ៍ដែលអាចទុកចិត្តបំផុតសម្រាប់សម្អាតវាគឺ git filter-repo។ មិនដូច ការបង្កើតមូលដ្ឋានឡើងវិញរបស់ gitដែលសរសេរឡើងវិញ បុគ្គល commits, git filter-repo អាចសរសេរឡើងវិញទាំងមូល commit ប្រវត្តិដែលផ្អែកលើផ្លូវឯកសារ លំនាំ ឬខ្លឹមសារ។
ឧទាហរណ៍៖ ដើម្បីលុបការកើតឡើងទាំងអស់នៃ config.json ដែលអាចមានអាថ៌កំបាំង៖
⚠️ ឧទាហរណ៍អប់រំ សូមផ្ទៀងផ្ទាត់នៅក្នុង repo សាកល្បងមុនពេលប្រើប្រាស់ក្នុងផលិតកម្ម
ឬដើម្បីលុបទាំងអស់ commits ដែលរួមបញ្ចូលខ្សែអក្សរជាក់លាក់មួយ (ឧ. AWS_SECRET_ACCESS_KEY):
⚠️ ឧទាហរណ៍អប់រំ សូមផ្ទៀងផ្ទាត់នៅក្នុង repo សាកល្បងមុនពេលប្រើប្រាស់ក្នុងផលិតកម្ម
សូមប្រយ័ត្ន៖ វានឹងសរសេរឡើងវិញ commit ហាស។ អ្នកនឹងត្រូវបង្ខំឱ្យចុច និងជូនដំណឹងដល់អ្នកសហការទាំងអស់។ សោស្វ័យប្រវត្តិកម្ម ឬសោដាក់ពង្រាយណាមួយដែលភ្ជាប់ទៅ commit ហាសនឹងបែក។
លើសពីនេះ ឧបករណ៍ដូចជា សម្អាត BFG Repo ផ្តល់ជូននូវសមត្ថភាពស្រដៀងគ្នា ប៉ុន្តែមានភាពបត់បែនតិចជាង ហើយឥឡូវនេះត្រូវបានចាត់ទុកថាហួសសម័យសម្រាប់ករណីស្មុគស្មាញ។
ការទប់ស្កាត់ការលេចធ្លាយសម្ងាត់មុនពេលវាទៅដល់ Git
ការបង្ការល្អជាងការសម្អាត។ នេះជាវិធីដើម្បីបញ្ឈប់អាថ៌កំបាំងពីការលេចធ្លាយ កំណត់ហេតុ git:
1. Pre-commit Hooks
ប្រើឧបករណ៍ដូច pre-commit, gitleaksឬ talisman ដើម្បីស្កេនរកអាថ៌កំបាំងជាមុនសិន commits:
2. CI/CD Pipeline ការអនុវត្ត
បញ្ចូល ការរកឃើញសម្ងាត់ ចូលទៅក្នុងការងារ CI របស់អ្នក។ ការបរាជ័យកើតឡើងនៅពេលដែលអាថ៌កំបាំងត្រូវបានរកឃើញ។ ធ្វើឱ្យរឿងនេះក្លាយជាគោលនយោបាយ។
៣. ការគ្រប់គ្រងអាថ៌កំបាំង
កុំសរសេរកូដអត្តសញ្ញាណឲ្យបានហ្មត់ចត់ឡើយ។ ប្រើអថេរបរិស្ថាន ឃ្លាំងសុវត្ថិភាព ឬកម្មវិធីគ្រប់គ្រងសម្ងាត់ចាប់ពីថ្ងៃដំបូង។
៤. ការពឹងផ្អែកលើការធ្វើសវនកម្ម
កុំទុកចិត្តកញ្ចប់ភាគីទីបីដោយងងឹតងងល់។ អាថ៌កំបាំងអាចលេចធ្លាយ តាមរយៈស្រទាប់ npm, PyPI ឬ Docker។
ការជួសជុលចុងក្រោយ៖ សម្អាតអាថ៌កំបាំងជាមួយ git filter-repo
ការលុបអាថ៌កំបាំងចេញពីកូដគឺមិនគ្រប់គ្រាន់ទេ។ កំណត់ហេតុ git រក្សាកំណត់ត្រាពេញលេញ លុះត្រាតែអ្នកចាត់វិធានការដោយចេតនាដើម្បីសរសេរប្រវត្តិសាស្ត្រឡើងវិញ។ កុំពឹងផ្អែកលើ កន្លែងរក្សាទុក git ឬដុតនំពាក់កណ្តាល ការបង្កើតមូលដ្ឋានឡើងវិញរបស់ git ការប៉ុនប៉ង។ ប្រើ git filter-repo នៅពេលដែលអ្នកត្រូវការសម្អាតយ៉ាងស៊ីជម្រៅ និងអនុវត្តគោលការណ៍ និងការស្កេនមុនពេលដែលអាថ៌កំបាំងទៅដល់ឃ្លាំងទិន្នន័យរបស់អ្នកតាំងពីដំបូង។
សម្រាប់ការរកឃើញការសម្ងាត់ជាមុន សូមពិចារណាប្រើឧបករណ៍ដូចជា ស៊ីហ្គេនី ដើម្បីធានារបស់អ្នក។ pipelineស, អនុវត្ត commit អនាម័យ និងការពារការលេចធ្លាយដែលមានតម្លៃថ្លៃមុនពេលវាលេចចេញមក។ Git មិនដែលភ្លេចឡើយ ប៉ុន្តែអ្នកអាចធ្វើឱ្យប្រាកដថាវាមិនដែលចងចាំអាថ៌កំបាំងរបស់អ្នកតាំងពីដំបូងឡើយ។





