ห้อยกระทำเป็นกระทำที่ไม่เกี่ยวข้องกับการอ้างอิงคือไม่มีทางที่จะไปถึงมัน
ตัวอย่างเช่นพิจารณาแผนภาพด้านล่าง สมมติว่าเราลบ featureX ของสาขาโดยไม่รวมการเปลี่ยนแปลงจากนั้นคอมมิท D จะกลายเป็นคอมมิชชันห้อยเนื่องจากไม่มีการอ้างอิงที่เกี่ยวข้อง ถ้ามันถูกรวมเข้ากับมาสเตอร์แล้ว HEAD และการอ้างอิงหลักจะชี้ไปที่คอมมิท D และมันจะไม่ห้อยอีกต่อไปแม้ว่าเราจะลบฟีเจอร์ X อ่านหมายเหตุหลังจากแผนภาพเพื่อทำความเข้าใจกับสิ่งนี้ให้ดีขึ้น
Git จะทำการรวบรวมขยะโดยอัตโนมัติ เราสามารถใช้git reflog
เพื่อกู้คืนสาขา (ของ dangling commits) ซึ่งถูกลบโดยไม่รวมเข้าด้วยกัน เราสามารถกู้คืนคอมมิทที่ถูกลบได้ก็ต่อเมื่อมีอยู่ในที่เก็บวัตถุในเครื่องเท่านั้น หากเป็นขยะที่เก็บรวบรวมเราจะไม่สามารถกู้คืนได้
บันทึกว่าชื่อสาขาเช่นป้ายสาขาจริงๆแล้วเป็นการอ้างอิงถึงการกระทำล่าสุดในสาขาเช่นปลายของสาขา ในแผนภาพด้านบน featureX, master และ HEAD เป็นเพียงการอ้างอิงถึงการกระทำที่เฉพาะเจาะจง featureX และป้ายกำกับหลักอ้างอิงถึงการกระทำล่าสุดในสาขาที่เกี่ยวข้อง โดยทั่วไปหัวหมายถึงส่วนปลายของสาขาที่เช็คเอาท์ในปัจจุบัน (ต้นแบบในกรณีนี้) หากคุณชำระเงินการกระทำที่เก่ากว่าในสาขาปัจจุบันของคุณ HEAD จะอยู่ในสถานะแยกออกนั่นคือมันจะชี้ไปที่การส่งมอบที่เก่ากว่าแทนที่จะเป็นการกระทำล่าสุด นอกจากนี้โปรดทราบว่า HEAD เรียกว่าการอ้างอิงแบบสัญลักษณ์เนื่องจากจริง ๆ แล้วชี้ไปที่ป้ายสาขาปัจจุบันและป้ายสาขาใด ๆ ชี้ไปที่ปลายของสาขาเสมอ ดังนั้นภายใต้สถานการณ์ปกติ HEAD จึงชี้ไปที่การกระทำล่าสุด
เช่นกันทราบว่า Git เป็นตัวแทนของตนกระทำกราฟ / ประวัติศาสตร์เป็นชี้นำวัฏจักรกราฟ การกระทำแต่ละครั้งมีการอ้างอิงถึงผู้ปกครอง ดังนั้นลูกศรในจุดไดอะแกรมคอมมิตจาก child commit ไปยัง parent commit เราต้องการการอ้างอิงถึงเด็กที่กระทำล่าสุดเพื่อที่จะไปให้ถึงความมุ่งมั่นที่เก่ากว่าในสาขา
PS - แผนภาพข้างต้นและความเข้าใจที่ได้รับจากหลักสูตรฟรีนี้ แม้ว่าหลักสูตรจะค่อนข้างเก่าความรู้ก็ยังคงเกี่ยวข้อง
git gc
และ 2) ฉันไม่จำเป็นต้องกังวลเกี่ยวกับเรื่องนี้เลยเพราะบิตห้อยเหล่านี้เป็นเรื่องปกติและคอมไพล์แล้ว จัดการกับพวกเขา?