Lewati ke konten utama

Git Prune: Apa Itu Git Pruning dan Cara Menggunakan Git Prune

Git prune adalah perintah Git yang menghapus objek dari repositori yang tidak lagi dapat dijangkau dari commit atau branch mana pun, membantu mengosongkan ruang disk.
Diperbarui 28 Sep 2026  · 5 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Git memiliki pendekatan protektif terhadap penghapusan data untuk mencegah hilangnya commit atau data penting secara tidak sengaja.

Namun, hal ini dapat membuat data usang, seperti referensi ke branch yang dihapus, tetap terlihat. Seiring waktu, repositori Git dapat menumpuk objek yang tidak direferensikan, yang menghabiskan ruang disk secara tidak perlu dan berpotensi menimbulkan kebingungan.

Perintah git prune command adalah utilitas perawatan di dalam Git, yang dirancang terutama untuk membersihkan objek yang tidak dapat dijangkau di repositori.

Objek yang tidak dapat dijangkau adalah objek yang tidak dapat diakses oleh branch, tag, remote-tracking branch, atau referensi lainnya. Objek-objek ini dapat memakan ruang di repositori, membuatnya penuh dengan data yang tidak perlu seiring waktu.

Meskipun git prune adalah alat yang kuat untuk menjaga repositori tetap ramping, sebagian besar pengguna mungkin tidak perlu menggunakannya secara langsung karena Git memiliki pengumpulan sampah otomatis (git gc). Namun, memahami peran dan fungsinya bisa bermanfaat bagi pengguna Git tingkat lanjut atau dalam skenario tertentu ketika pemeliharaan repositori secara manual diperlukan atau diutamakan.

Apa Itu git prune?

Perintah git prune digunakan untuk menghapus objek yang tidak lagi diperlukan di repositori lokal. Objek-objek ini bisa berupa commit, tree (snapshot direktori), blob (file), dan tag yang tidak lagi dapat diakses dari branch atau tag mana pun di repositori.

Sederhananya, git prune membantu membersihkan file dan data yang tidak diperlukan di repositori, menghemat ruang dan mengurangi kekacauan.

Bagaimana objek bisa menjadi tidak dapat dijangkau?

Objek bisa menjadi tidak dapat dijangkau dengan beberapa cara—misalnya, dengan menghapus branch atau menulis ulang commit. Saat branch dihapus, commit apa pun yang unik untuk branch tersebut dan bukan bagian dari branch atau tag lain akan menjadi tidak dapat dijangkau.

Penulisan ulang commit, menggunakan perintah seperti git rebase, menghasilkan commit baru dan membuang yang lama, sehingga membuatnya juga menjadi tidak dapat dijangkau.

Masa tenggang dan reflog

Git memelihara log pembaruan ke ujung branch dan referensi lain yang disebut reflog (reference log). Kita dapat melihatnya menggunakan perintah git reflog.

Meskipun suatu objek tidak dapat dijangkau, jika masih ada di reflog, maka objek tersebut tidak akan dihapus oleh git prune.

Secara default, reflog memiliki masa kedaluwarsa 90 hari, memberikan masa tenggang di mana objek yang tidak dapat dijangkau disimpan sementara dan tidak langsung dipruning.

Kapan Menggunakan git prune

Secara umum, kita tidak perlu menggunakan git prune secara langsung. Git memiliki mekanisme pengumpulan sampah yang berjalan otomatis setelah beberapa perintah untuk membersihkan file yang tidak diperlukan dan mengoptimalkan efisiensi repositori lokal dengan mengompresi beberapa file.

Meski begitu, kita mungkin ingin membersihkan repositori secara manual, misalnya:

  • Setelah kita melakukan operasi yang kita tahu akan membuat objek tidak dapat dijangkau, seperti penghapusan branch. 
  • Kita ingin segera mengosongkan ruang disk.
  • Menjaga repositori tetap rapi dan bersih setiap saat.

Pengumpulan sampah dengan git gc

Alih-alih pruning langsung, biasanya disarankan mengandalkan mekanisme pengumpulan sampah, yang tidak hanya menjalankan git prune tetapi juga mengoptimalkan ruang dengan mengompresi objek.

Seperti disebutkan di atas, pengumpulan sampah akan dijalankan otomatis setelah beberapa perintah. Kita dapat memanggil pengumpulan sampah secara manual dengan perintah:

git gc

Cara Menggunakan git prune

Karena git prune akan menghapus data, disarankan untuk menjalankannya terlebih dahulu dengan opsi --dry-run.

git prune --dry-run

Opsi ini akan menampilkan daftar objek yang akan dipruning tanpa benar-benar mempruningnya. Keluaran akan terlihat seperti:

0d7dff8258654c03a058987b3e63c86feca9200d commit
ea1380f52f0bfa0142e46767adfd56593681091a blob
fa91af78a1ab453c1d7632192b3ca8bf217ec711 commit

Keluaran tersebut menunjukkan bahwa ada dua commit dan sebuah blob yang tidak dapat dijangkau dan akan dihapus. Setelah memastikan tidak ada data penting yang tercantum, kita dapat melanjutkan pembersihan:

git prune

Dalam beberapa situasi, kita ingin membersihkan repositori segera setelah melakukan tindakan yang kita tahu akan menghasilkan objek yang tidak dapat dijangkau, seperti penghapusan branch. Kita mungkin menjalankan git prune --dry-run, tetapi keluarannya kosong. Alasannya adalah commit yang dihapus masih direferensikan di reflog.

Jika kita tidak ingin menunggu hingga kedaluwarsa dari reflog, kita dapat mengkedaluwarsakannya secara manual menggunakan perintah:

git reflog expire --expire-unreachable=now --all

Mari kita uraikan opsi yang digunakan:

  • Opsi --expire-unreachable=now menetapkan tanggal kedaluwarsa semua objek yang tidak dapat dijangkau menjadi sekarang, sehingga langsung kedaluwarsa.
  • Opsi --all menargetkan semua entri reflog di repositori. Tanpa opsi ini, kita harus menentukan ref tertentu (seperti branch atau tag) yang ingin kita operasikan.

git prune: Penggunaan Lanjutan

Mari kita lihat beberapa teknik lanjutan, seperti menentukan waktu kedaluwarsa atau mempruning file yang telah dipaketkan.

Menentukan waktu kedaluwarsa

Kita mungkin hanya ingin membersihkan objek tidak dapat dijangkau yang lebih lama, misalnya mempruning hanya objek yang setidaknya berusia dua minggu.

Opsi --expire <time> memungkinkan kita menentukan batas waktu. Git akan menghapus objek yang tidak dapat dijangkau selama lebih dari waktu yang ditentukan. Parameter <time> menerima berbagai format seperti "2 weeks ago", "3 days," "yesterday," dan sebagainya, untuk memberikan fleksibilitas dalam menentukan periode kedaluwarsa.

Contoh perintah:

git prune --expire=2.weeks.ago

Mempruning file yang telah dipaketkan

Git menyimpan objek dengan dua cara utama: sebagai file individual (loose objects) dan dalam file paket. Packing adalah mekanisme untuk menghemat ruang dan meningkatkan kinerja dengan menyimpan banyak objek dalam satu file dan menghilangkan redundansi.

Terkadang, sebuah objek dapat ada dalam bentuk loose dan packed sekaligus. Meskipun redundansi ini tidak berbahaya (selain memakan sedikit ruang disk tambahan), kita mungkin ingin membersihkan loose object yang juga sudah dipaketkan untuk mengembalikan ruang.

Perintah git prune-packed menghapus loose object jika sudah termasuk dalam sebuah pack. Berbeda dengan git prune, git prune-packed tidak menerima opsi seperti --expire <time>. Perintah ini hanya membersihkan loose object yang sudah dipaketkan.

Kesimpulan

Seiring kita menggunakan repositori, beberapa objek akan menjadi tidak dapat dijangkau, menyebabkan penggunaan ruang disk yang tidak perlu. Git mengelolanya menggunakan sistem pengumpulan sampah yang menghapus objek yang tidak dapat dijangkau setelah beberapa waktu tidak aktif.

Mekanisme pengumpulan sampah dijalankan secara otomatis oleh Git setelah beberapa perintah. Namun, kita juga dapat menjalankannya secara manual menggunakan perintah git gc. Proses pengumpulan sampah tidak hanya akan menghapus objek yang tidak dapat dijangkau menggunakan git prune tetapi juga mengoptimalkan ruang disk dengan mengompresi beberapa objek.

Pengguna Git tingkat lanjut mungkin ingin mempertahankan repositori yang bersih secara manual. Perintah git prune memungkinkan penghapusan manual objek yang tidak dapat dijangkau. Kita harus selalu menjalankan git prune --dry-run sebelum menjalankan git prune untuk mendapatkan gambaran umum tentang objek yang akan dihapus selama proses pruning.


François Aubry's photo
Author
François Aubry
LinkedIn
Insinyur full-stack & pendiri di CheapGPT. Mengajar selalu menjadi passion saya. Sejak masa awal sebagai mahasiswa, saya aktif mencari peluang untuk membimbing dan membantu mahasiswa lain. Passion ini mendorong saya menempuh studi PhD, di mana saya juga menjadi asisten pengajar untuk mendukung kegiatan akademik saya. Selama tahun-tahun itu, saya menemukan kepuasan besar dalam suasana kelas tradisional, membangun koneksi dan memfasilitasi proses belajar. Namun, dengan hadirnya platform pembelajaran daring, saya melihat potensi transformatif pendidikan digital. Bahkan, saya terlibat aktif dalam pengembangan salah satu platform tersebut di universitas kami. Saya sangat berkomitmen untuk mengintegrasikan prinsip-prinsip pengajaran tradisional dengan metodologi digital yang inovatif. Tujuan saya adalah menciptakan kursus yang tidak hanya menarik dan informatif, tetapi juga mudah diakses oleh para pembelajar di era digital ini.
Topik
Git

Pelajari version control dengan kursus-kursus ini!

Kursus

Pendahuluan Konsep GitHub

2 jam
53.7K
Pelajari cara menggunakan berbagai fitur GitHub, menavigasi antarmuka, dan melakukan tugas kolaboratif sehari-hari.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

Lihat SelengkapnyaLihat Selengkapnya