- Indeks multi-paket baru tanpa cruft-less dengan
repack.MIDXMustContainCruftmemotong ukuran MIDX dan mempercepat pembacaan. - Pengemasan ulang jalur pejalan kaki (
--path-walk) memproduksi kemasan yang lebih kecil dengan waktu yang kompetitif. - Format pertukaran stash memungkinkan ekspor/impor stash sebagai referensi di seluruh mesin.
- Kemajuan menuju Git 3.0: SHA-256 dan standar reftable telah ditunjukkan; pemolesan UI dan perkakas.

Git 2.51 sudah keluar, menghadirkan serangkaian peningkatan luas dari lebih dari 91 kontributor (termasuk 21 kontributor pertama kali) dan dorongan berkelanjutan untuk memodernisasi alat tanpa mengganggu alur kerja yang sudah ada.
Rilis ini berfokus pada peningkatan praktis—dari penyimpanan dan pengemasan hingga kegunaan dan postur keamanan—sambil menyiapkan jalur untuk perubahan yang dijadwalkan untuk Git 3.0.
Indeks multi-kemasan bebas kerak
Git menyimpan data sebagai objek (blob, pohon, komit) baik secara longgar maupun di dalam file paket, dengan indeks paket yang memetakan hash ke offset. Indeks multi-paket (MIDX) memungkinkan Git mengindeks objek di banyak paket, mengubah banyak pencarian menjadi satu O(log N) pencarian, dan mereka juga mendukung peta bit keterjangkauan untuk pemeriksaan penahanan yang cepat.
Kerutannya telah menjadi bungkusan sampah, tempat objek yang tidak dapat dijangkau berada di luar MIDX. Jika suatu objek yang sebelumnya tidak dapat dijangkau kemudian menjadi dapat dijangkau dari komit bitmap tetapi hanya ada dalam paket cruft, objek tersebut tidak memiliki posisi bit—sehingga menghalangi pembuatan bitmap.
Git 2.51 mengubah perilaku pengemasan ulang Sehingga ketika menghasilkan paket non-cruft baru, ia menduplikasi objek (dan leluhurnya) yang salinan lainnya hanya berada di dalam paket cruft. Mengulangi hal ini memastikan himpunan non-cruft tertutup dalam jangkauan, memungkinkan cakupan bitmap yang konsisten.
Konfigurasi baru membuat ini mudah: repack.MIDXMustContainCruft Menggunakan logika pengemasan ulang yang diperbarui untuk menjaga paket-paket cruft tetap berada di luar MIDX. Dalam penggunaan skala besar, berkas MIDX menyusut sekitar 38%, ditulis sekitar 35% lebih cepat, dan meningkatkan kinerja baca sekitar 5%.
Paket yang lebih kecil dengan jalur berjalan
Git 2.49 memperkenalkan hash nama yang lebih baik untuk mengurutkan objek selama pemilihan delta, mengurangi ketergantungan pada 16 karakter jalur terakhir dan mempertimbangkan struktur direktori untuk pemasangan yang lebih cerdas.
Git 2.51 melangkah lebih jauh dengan mode pengumpulan "path walk" baru untuk pengemasan ulang. Alih-alih memancarkan objek secara ketat berdasarkan urutan revisi, Git mengelompokkan dan memancarkan semua objek untuk jalur tertentu secara bersamaan, sehingga menghilangkan kebutuhan heuristik hash nama.
Hasilnya adalah file paket yang lebih ramping dengan peluang delta yang lebih baik di antara objek-objek dengan jalur yang sama dan pengaturan waktu yang kompetitif dengan traversal klasik. Anda dapat mencobanya dengan yang baru --path-walk pilihan saat mengemas ulang.
Format pertukaran simpanan
Jika Anda menggunakan git stash sering, Anda tahu secara tradisional model setiap simpanan sebagai tiga komitmen (dipentaskan, tidak dipentaskan, dan induk sintetis yang mengikatnya bersama-sama) disimpan di bawah refs/stash, membuat migrasi lintas-mesin menjadi sulit.
Git 2.51 menambahkan representasi berantai di mana setiap entri simpanan menyertakan tautan keturunan tambahan ke entri simpanan sebelumnya, sehingga membentuk riwayat linier yang lebih mudah dipindahkan dan dikelola.
Subperintah baru membuka portabilitas: Anda dapat mengekspor stash ke dalam referensi tunggal dan mendorong/menariknya seperti cabang atau tag apa pun, lalu mengimpornya di komputer lain.
Contoh alur kerja:
$ git stash export --to-ref refs/stashes/my-stash
$ git push origin refs/stashes/my-stash
$ git fetch origin '+refs/stashes/*:refs/stashes/*'
$ git stash import refs/stashes/my-stash
Catatan kinerja untuk repositori besar
Pembaruan referensi berskala lebih baik Dalam repositori dengan jumlah referensi yang sangat besar, berkat pembaruan batch yang mengurangi overhead transaksional. Dalam skenario dengan ~10,000 referensi, peningkatan yang dilaporkan mencakup peningkatan kecepatan yang dramatis—terutama dengan backend yang dapat di-reftable—pada operasi seperti fetch dan push.
Perkakas dan polesan UX
git cat-filelebih informatif untuk jalur submodul di--batch-checkmode, melaporkan entri submodul alih-alih hanya “hilang”.- Filter Bloom jalur yang diubah sekarang membantu dengan beberapa pathspec (misalnya,
git log -- a b), memperluas jangkauan pengoptimalan. git switchdangit restorestabil dan tidak lagi dianggap eksperimental, memperkuat peran mereka sebagai alternatif yang lebih jelasgit checkout.git whatchangedsudah ditinggalkan dan dijadwalkan untuk dihapus di Git 3.0; itu tetap tersedia di belakang--i-still-use-this.git for-each-refmenambahkan paginasi melalui--start-after, meningkatkan daftar referensi di repositori yang sangat besar.- Penggabungan mendapatkan ringkasan yang lebih rapi dengan
--compact-summaryuntukgit mergedangit pull.
Menuju Git 3.0: standar keamanan dan penyimpanan
Proyek ini melanjutkan transisi SHA-256Meskipun repositori baru saat ini masih menggunakan SHA-1 secara default, lebih banyak komponen internal dan transport di versi 2.51 yang memahami SHA-256, sehingga memudahkan eksperimen dan pengujian kompatibilitas.
Reftable berada di jalur untuk menjadi pilihan default referensi backend di Git 3.0, mengatasi sensitivitas huruf besar-kecil dan jebakan Unicode di Windows/macOS, mengaktifkan transaksi ref atomik, dan mendapatkan manfaat dari pemadatan geometris dan kompresi awalan.
Ingin melihat pratinjau default di masa mendatang? Anda dapat membangun Git dengan WITH_BREAKING_CHANGES untuk menguji baseline yang akan datang (misalnya, SHA-256 dan default yang dapat direftable) sebelum rilis 3.0.
Proses dan standar pengembang
Penggunaan C99 meluas:basis kode sekarang secara luas mengizinkan bool kata kunci, dan dokumen proyek fitur C99 mana yang diadopsi atau sedang dievaluasi, menyeimbangkan fitur bahasa modern dengan portabilitas.
Pedoman kontribusi terus berkembang untuk memperbolehkan penyerahan dengan identitas selain nama resmi kontributor, lebih selaras dengan pendekatan kernel Linux dan menurunkan hambatan untuk berpartisipasi.
Git 2.51 memadukan kemenangan konkret—seperti MIDX yang ringkas, paket path-walk, impor/ekspor stash, dan peningkatan performa repo besar—dengan kemajuan yang stabil menuju kriptografi yang lebih kuat dan penyimpanan default modern, yang dihadirkan oleh beragam komunitas pengelola dan kontributor baru.
