การบำรุงรักษาและจัดระเบียบคลังเก็บ
เรียนรู้คำสั่งอย่าง `git gc` และ `git prune` เพื่อทำความสะอาดและเพิ่มประสิทธิภาพคลังเก็บ Git ภายในเครื่อง
การบำรุงรักษาและจัดระเบียบคลังเก็บ เป็นบทเรียน Git & GitHub Professional Workflow ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Git & GitHub Professional Workflow และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Git & GitHub Professional Workflow มีบทเรียนทั้งหมด 4 บทเรียน
ยินดีต้อนรับสู่การดูแล Git
เมื่อเวลาผ่านไป คลัง Git ภายในเครื่องของคุณอาจสะสมไฟล์ที่ไม่จำเป็นและทำงานได้ไม่มีประสิทธิภาพ ลองนึกภาพเหมือนห้องที่รก!
ในบทเรียนนี้ เราจะเรียนรู้วิธีเก็บกวาดและเพิ่มประสิทธิภาพคลัง Git โดยใช้คำสั่งอันทรงพลังอย่าง git gc และ git prune ซึ่งจะช่วยให้โครงการของคุณทำงานได้อย่างราบรื่น
อธิบายที่จัดเก็บอ็อบเจกต์ของ Git
ก่อนอื่น มาทำความเข้าใจว่า Git จัดเก็บข้อมูลอย่างไร Git บันทึกประวัติโครงการของคุณเป็นชุดของ 'อ็อบเจกต์':
- บล็อบ: เนื้อหาไฟล์
- ทรี: ไดเรกทอรีและเนื้อหาภายใน
- คอมมิต: ภาพรวมของโครงการ ณ ช่วงเวลาหนึ่ง
- แท็ก: ตัวชี้ไปยังคอมมิตเฉพาะ
อ็อบเจกต์เหล่านี้จัดเก็บเป็น 'อ็อบเจกต์แยก' หรือบีบอัดเป็น 'ไฟล์แพ็ก' เพื่อเพิ่มประสิทธิภาพได้
แนะนำ <code>git gc</code> (เก็บกวาดสิ่งที่ไม่ใช้)
คำสั่ง git gc ย่อมาจาก 'garbage collect' เป็นเครื่องมือในตัวของ Git สำหรับเก็บกวาดและเพิ่มประสิทธิภาพคลังของคุณ
งานหลักของคำสั่งนี้ประกอบด้วย:
- จัดแพ็กอ็อบเจกต์แยก: บีบอัดอ็อบเจกต์แต่ละรายการรวมเป็นไฟล์แพ็กเดียว
- ล้างอ็อบเจกต์ที่เข้าถึงไม่ได้: ลบอ็อบเจกต์ที่ไม่มีคอมมิต สาขา หรือแท็กใดอ้างอิงอีกต่อไป (หลังผ่านอายุที่กำหนด)
- ลบไฟล์แพ็กเก่า: กำจัดไฟล์อ็อบเจกต์ที่บีบอัดและล้าสมัย
กระบวนการนี้ทำให้คลังของคุณมีขนาดเล็กลงและทำงานเร็วขึ้น
การเรียกใช้ <code>git gc</code> (การใช้งานทั่วไป)
คุณสามารถเรียกใช้ git gc ด้วยตนเองได้ทุกเมื่อ Git ยังเรียกใช้คำสั่งนี้โดยอัตโนมัติในเบื้องหลังเมื่อคุณดำเนินการบางอย่าง เช่น การส่งหรือการดึงข้อมูล
โดยทั่วไปแล้วการเรียกใช้คำสั่งนี้ปลอดภัย แต่ควรตรวจสอบให้แน่ใจว่าไม่มีงานที่ยังไม่ได้คอมมิตซึ่งคุณอาจต้องกู้คืนก่อนการเก็บกวาดครั้งใหญ่
ลองเรียกใช้ในเทอร์มินัลของคุณ:
git gcทำความเข้าใจผลลัพธ์ของ <code>git gc</code>
เมื่อคุณเรียกใช้ git gc คุณจะเห็นผลลัพธ์ที่คล้ายกับนี้:
Counting objects: 1234, done.
Compressing objects: 100% (987/987), done.
Writing objects: 100% (1234/1234), done.
Total 1234 (delta 567), reused 0 (delta 0)
Removing duplicate objects: 100% (256/256), done.
Pruning objects: 100% (123/123), done.ผลลัพธ์นี้แสดงให้เห็นว่า Git กำลังจัดแพ็กอ็อบเจกต์ เขียนไฟล์แพ็กใหม่ และล้าง (ลบ) อ็อบเจกต์เก่าที่เข้าถึงไม่ได้ ตัวเลขจะแตกต่างกันไปตามสถานะของคลังของคุณ
เน้นที่ `git prune`
แม้ว่า git gc จะจัดการงานล้างข้อมูลได้หลายอย่าง แต่ git prune มีหน้าที่เฉพาะในการลบอ็อบเจ็กต์ที่เรียกว่า "dangling" หรือ "unreachable"
- อ็อบเจ็กต์แบบ dangling: อ็อบเจ็กต์เหล่านี้มีอยู่ในคลังของคุณ แต่ไม่มีคอมมิต แบรนช์ หรือแท็กใดอ้างอิงถึงอีกต่อไป และไม่ได้เป็นส่วนหนึ่งของไฟล์แพ็ก
- อ็อบเจ็กต์แบบ unreachable: มีความหมายคล้ายกับ dangling แต่เป็นคำที่ครอบคลุมกว้างกว่า อ็อบเจ็กต์เหล่านี้อาจเกิดขึ้นได้จากหลายสาเหตุ เช่น หลังการรีเบสหรือรีเซ็ตที่เขียนประวัติใหม่
git prune จะลบอ็อบเจ็กต์เหล่านี้หากเก่ากว่าระยะเวลาหมดอายุเริ่มต้น ซึ่งโดยปกติคือ 2 สัปดาห์
การเรียกใช้ `git prune` โดยตรง
โดยปกติคุณไม่จำเป็นต้องเรียกใช้ git prune โดยตรง เพราะ git gc จะเรียกใช้คำสั่งนี้อยู่แล้ว อย่างไรก็ตาม คุณสามารถใช้คำสั่งนี้เพื่อล้างข้อมูลแบบเจาะจงได้
หากต้องการดูว่า git prune จะทำอะไรโดยไม่ลบข้อมูลจริง ให้ใช้ตัวเลือก --dry-run:
git prune --dry-runการล้างข้อมูลตามระยะเวลาหมดอายุ
โดยค่าเริ่มต้น git prune (รวมถึงขั้นตอนการล้างข้อมูลของ git gc) จะลบเฉพาะอ็อบเจ็กต์ที่เก่ากว่าสองสัปดาห์เท่านั้น คุณสามารถเปลี่ยนค่านี้ได้โดยใช้ตัวเลือก --expire
ตัวเลือกนี้มีประโยชน์หากคุณต้องการล้างอ็อบเจ็กต์แบบ dangling ที่เพิ่งสร้างขึ้นอย่างเข้มงวดมากขึ้น เช่น หลังการรีเบสเพื่อทดลอง ซึ่งคุณแน่ใจแล้วว่าไม่จำเป็นต้องย้อนกลับ
ตัวอย่างเช่น หากต้องการล้างอ็อบเจ็กต์ที่เก่ากว่า 1 วัน:
git prune --expire=1.dayแยกความแตกต่างจาก `git reflog expire`
สิ่งสำคัญคืออย่าสับสนระหว่าง git prune กับ git reflog expire แม้ทั้งสองคำสั่งจะเกี่ยวข้องกับการล้างข้อมูล แต่มีจุดประสงค์แตกต่างกัน:
git prune: ลบอ็อบเจ็กต์ Git จริง (บล็อบ ทรี และคอมมิต) ออกจากฐานข้อมูลอ็อบเจ็กต์git reflog expire: ล้างรายการใน reflog (ประวัติภายในเครื่องที่บันทึกว่า HEAD เคยชี้ไปที่ใด) ทำให้ค้นหาคอมมิตบางรายการได้ยากขึ้น แต่ไม่ได้ลบอ็อบเจ็กต์เหล่านั้น
โปรดใช้ความระมัดระวังเสมอเมื่อแก้ไขประวัติหรือเรียกใช้คำสั่งล้างข้อมูล
ตรวจสอบการดูแลคลัง
ข้อใดต่อไปนี้อธิบายหน้าที่หลักของ git gc ได้ดีที่สุด
ทบทวนและขั้นตอนถัดไป
ขอแสดงความยินดี คุณได้เรียนรู้วิธีดูแลให้คลัง Git เป็นระเบียบและทำงานได้อย่างมีประสิทธิภาพแล้ว
git gc: คำสั่งแบบครบวงจรสำหรับการเก็บขยะ การจัดแพ็กอ็อบเจ็กต์ และการล้างข้อมูลgit prune: มุ่งค้นหาและลบอ็อบเจ็กต์ที่ไม่สามารถเข้าถึงได้หรือเป็นแบบ dangling ซึ่งเก่ากว่าระยะเวลาหมดอายุที่กำหนด
การบำรุงรักษาเป็นประจำช่วยให้กระบวนการทำงานกับ Git ราบรื่น และป้องกันไม่ให้คลังใช้พื้นที่ดิสก์มากเกินไป ขอให้เรียนรู้ต่อไปอย่างยอดเยี่ยม
คำถามที่พบบ่อย
บทเรียน “การบำรุงรักษาและจัดระเบียบคลังเก็บ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การบำรุงรักษาและจัดระเบียบคลังเก็บ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Git & GitHub Professional Workflow ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Git & GitHub Professional Workflow มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การบำรุงรักษาและจัดระเบียบคลังเก็บ”
เรียนรู้คำสั่งอย่าง `git gc` และ `git prune` เพื่อทำความสะอาดและเพิ่มประสิทธิภาพคลังเก็บ Git ภายในเครื่อง คุณปฏิบัติ Git & GitHub Professional Workflow ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Git & GitHub Professional Workflow หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Git & GitHub Professional Workflow บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การบำรุงรักษาและจัดระเบียบคลังเก็บ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Git & GitHub Professional Workflow นี้ได้ไหม
ได้ บทเรียน Git & GitHub Professional Workflow ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- Git Reflog และการกู้คืนประวัติ
- Git Bisect สำหรับการแก้ไขข้อบกพร่อง
- การบำรุงรักษาและจัดระเบียบคลังเก็บ
- การเขียนประวัติใหม่ด้วย git filter-repo