Git 2.56 sudah resmi dirilis — versi terbaru dari sistem kontrol versi yang dipakai hampir semua developer. Rilis ini melibatkan lebih dari 104 kontributor, 39 di antaranya kontributor baru, dan membawa sejumlah perbaikan yang langsung terasa di pekerjaan sehari-hari: cara menyelesaikan konflik merge yang lebih aman, pencarian merge base yang bisa puluhan kali lebih cepat, sampai repack repositori yang hasilnya jauh lebih kecil. Berikut fitur yang paling layak dicoba.
git add --resolved: stage konflik tanpa salah ikut
Menyelesaikan konflik merge punya dua tahap: rapikan isi file di working tree, lalu stage file yang sudah selesai. Masalahnya, perintah lama seperti git add -u men-stage semua perubahan — termasuk file lain yang tidak berhubungan dengan konflik, bahkan file yang masih menyisakan penanda konflik karena terlewat.
Git 2.56 menghadirkan mode baru git add --resolved yang hanya mempertimbangkan file berstatus unmerged:
$ git add --resolved
fatal: the following paths still have conflict markers:
recipe.txt
$ # setelah recipe.txt dibersihkan dari penanda konflik
$ git add --resolved
$ git status --short
M notes.txt
M recipe.txt
Sebelum men-stage apa pun, Git memindai file yang masih berisi penanda konflik. Kalau ada satu saja, tidak ada yang di-stage dan Git menunjukkan file mana yang bermasalah. Bisa dibatasi dengan pathspec, tetapi aturannya tetap semua atau tidak sama sekali. Konflik berupa penghapusan atau file biner tetap bisa di-stage seperti biasa. Mode ini sengaja dibuat sempit: tidak bisa digabung dengan -u atau -A, dan mengabaikan file yang tidak pernah berkonflik.
Pencarian merge base sampai 70x lebih cepat
Setiap kali Git menggabungkan branch, menghitung diff pull request, atau mengecek kelayakan merge, Git harus mencari merge base alias leluhur bersama terbaik dari dua commit. Pada riwayat yang bercabang rumit, proses ini bisa lambat karena Git terus menelusuri riwayat yang sebenarnya sudah umum di kedua sisi.
Git 2.56 menambahkan aturan berhenti yang lebih cerdas: Git melacak berapa banyak commit dalam antrean yang masih eksklusif milik masing-masing sisi. Begitu satu sisi habis, tidak mungkin ada titik temu baru, sehingga penelusuran bisa dihentikan tanpa kehilangan hasil.
Hasilnya dramatis di repositori besar. Satu kasus nyata di monorepo: dari 0,68 detik menjadi 0,01 detik. Evaluasi produksi di dua monorepo besar menemukan percepatan sekitar 70x di salah satunya dan rata-rata 20x di yang lain. Kasus klasik kernel Linux ikut terperbaiki: git merge-base --all v4.8 v4.9 turun dari 167.441 langkah (0,29 detik) menjadi 3.887 langkah (0,01 detik).
Repack lebih kecil 71% dengan path-walk
Saat Git melakukan repack, Git mencari objek serupa untuk disimpan sebagai delta agar hemat ruang. Cara lama mengelompokkan kandidat berdasarkan hash nama; cara baru path-walk menelusuri objek berdasarkan posisinya di tree, sehingga versi-versi dari path yang sama berkumpul dan delta-nya lebih efisien.
Pada benchmark repositori Fluent UI, repack biasa menghasilkan pack 558,5 MB, sedangkan dengan --path-walk hanya 164,4 MB — sekitar 71% lebih kecil. Sebelumnya cara ini tidak kompatibel dengan bitmap (untuk melayani query objek cepat) dan delta islands (isolasi antar grup ref), sehingga sulit dipakai di server Git. Git 2.56 menghapus dua hambatan itu. Perlu dicatat, fitur ini belum aktif secara default — administrator server bisa mengujinya dulu.
Fitur lain yang layak dicatat
git branch --delete-merged 'origin/*' 'topic-*' --dry-run— bersihkan branch lokal yang sudah ter-merge secara massal, dengan opsi simulasi dulu. Branch yang sedang dipakai di worktree otomatis dilewati.git bisect run --reset-when-found— setelah bisect menemukan commit biang kerok, Git otomatis kembali ke posisi semula tanpa perlugit bisect resetmanual.git history drop <commit>(eksperimental) — hapus satu commit dan replay keturunannya di atas parent-nya.git refs create/update/delete/rename— manajemen ref tingkat rendah dengan proteksi compare-and-swap.git replay --linearize— ratakan topologi merge tanpa menyentuh working tree.- Deteksi salah ketik: perintah seperti
git push origin/mainkini diberi saran bentuk yang benar,git push origin main. git log --followkini melacak rename secara per-parent, jadi hasilnya konsisten di riwayat non-linear, termasuk kasus subtree merge.- Perbaikan performa: tes reftable turun dari sekitar 13 detik ke 0,2 detik; satu operasi
git diffpada checkout Chromium (sekitar 500 ribu entri index) dari sekitar 8 menit menjadi 0,07 detik.
Cara upgrade ke Git 2.56
- Cek versi saat ini: jalankan
git --version. - Windows:
winget upgrade --id Git.Git, atau unduh installer terbaru dari git-scm.com. - macOS:
brew upgrade gitbila memakai Homebrew. - Ubuntu/Debian:
sudo apt update && sudo apt install --only-upgrade git. Jika paket distro masih versi lama, gunakan PPAppa:git-core/ppa. - RHEL/Rocky/Fedora:
sudo dnf upgrade git.
Catatan: paket di repositori distro biasanya menyusul beberapa saat setelah rilis resmi, jadi wajar bila belum langsung tersedia. Jangan lupa jalankan git --version lagi untuk memastikan upgrade berhasil.
Untuk tim pengembang maupun pengelola TI — termasuk yang mengelola repo proyek instansi, sekolah, dan desa — Git 2.56 adalah upgrade murah yang hasilnya langsung terasa: merge lebih aman, operasi Git di repo besar lebih ngebut, dan penyimpanan di server lebih hemat. Git sendiri gratis dan open source, jadi tidak ada alasan menunda pembaruan kecil yang membawa perbaikan besar.
Sumber: Highlights from Git 2.56 — GitHub Blog, Release Notes Git 2.56.0.
