0Pricing
DevOps Bootcamp · บทเรียน

การบำรุงรักษาและจัดระเบียบคลังเก็บ

เรียนรู้คำสั่งอย่าง `git gc` และ `git prune` เพื่อทำความสะอาดและเพิ่มประสิทธิภาพคลังเก็บ Git ภายในเครื่อง

การบำรุงรักษาและจัดระเบียบคลังเก็บ เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 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) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การบำรุงรักษาและจัดระเบียบคลังเก็บ”

เรียนรู้คำสั่งอย่าง `git gc` และ `git prune` เพื่อทำความสะอาดและเพิ่มประสิทธิภาพคลังเก็บ Git ภายในเครื่อง คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “การบำรุงรักษาและจัดระเบียบคลังเก็บ” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Git Reflog และการกู้คืนประวัติ
  2. Git Bisect สำหรับการแก้ไขข้อบกพร่อง
  3. การบำรุงรักษาและจัดระเบียบคลังเก็บ
  4. การเขียนประวัติใหม่ด้วย git filter-repo
← กลับไปที่ DevOps Bootcamp