Komit menggantung adalah komit yang tidak terkait dengan referensi, yaitu tidak ada cara untuk mencapainya.
Sebagai contoh, perhatikan diagram di bawah ini. Misalkan kita menghapus branch featureX tanpa menggabungkan perubahannya, maka komit D akan menjadi komit menggantung karena tidak ada referensi yang terkait dengannya. Seandainya itu digabung menjadi master, maka HEAD dan referensi master akan menunjuk ke komit D dan itu tidak akan menggantung lagi, bahkan jika kita menghapus featureX. Baca catatan setelah diagram untuk memahami ini dengan lebih baik.
Git secara otomatis mengumpulkan sampah (yaitu membuang) menggantung komit. Kita dapat menggunakan git reflog
untuk memulihkan cabang (dari komit menggantung) yang telah dihapus tanpa menggabungkannya. Kami dapat memulihkan komit yang dihapus hanya jika ada di toko objek lokal. Jika itu sampah yang dikumpulkan, maka kita tidak bisa memulihkannya.
CATATAN bahwa nama cabang yaitu label cabang sebenarnya adalah referensi ke komit terbaru pada cabang yaitu ujung cabang. Dalam diagram di atas, featureX, master dan HEAD hanyalah referensi untuk commit tertentu. label featureX dan master merujuk pada komit terbaru di cabang masing-masing. KEPALA umumnya mengacu pada ujung cabang yang sedang diperiksa (master dalam hal ini). Jika Anda checkout komit yang lebih lama pada cabang Anda saat ini, maka HEAD akan berada dalam keadaan terpisah, yaitu akan menunjuk ke komit yang lebih lama daripada yang terbaru. Juga perhatikan bahwa KEPALA disebut referensi simbolis karena sebenarnya menunjuk ke label cabang saat ini dan label cabang apa pun selalu menunjuk ke ujung cabang. Jadi, dalam keadaan normal, HEAD secara tidak langsung menunjuk ke komit terbaru.
Sebagai tambahan, catat bahwa Git merepresentasikan graph / histori komit sebagai grafik asiklik terarah . Setiap komit memiliki referensi ke induknya. Oleh karena itu, panah dalam diagram komit menunjukkan dari komit anak ke komit orang tua. Kami membutuhkan referensi ke anak komit terbaru untuk mencapai komit yang lebih tua di cabang.
PS - Diagram dan pengertian di atas diperoleh dari kursus gratis ini . Meskipun jalannya sudah cukup tua, pengetahuannya masih relevan.
git gc
, dan 2) saya tidak perlu khawatir tentang ini sama sekali karena bit menggantung ini normal dan git sudah tangani mereka?