Git Gui: Terus-menerus mendapatkan "Repositori ini saat ini memiliki sekitar 320 objek longgar."

90

Setiap kali saya memulai Git Gui pada proyek tertentu, saya mendapatkan pesan ini:

Repositori ini saat ini memiliki sekitar 320 objek lepas.

masukkan deskripsi gambar di sini

Saya kemudian melanjutkan untuk mengklik Ya , dan saya mendapatkan dialog ini:

masukkan deskripsi gambar di sini

Masalahnya adalah, ketika saya membuka Git Gui lagi, saya mendapatkan pesan yang sama persis , lagi-lagi sekitar 320 objek lepas! Seolah-olah mengklik Ya tidak berpengaruh sama sekali.

sashoalm
sumber
Bisakah Anda memposting keluaran git count-objects -v?
CB Bailey
5
@TheCodeArtist Terima kasih, saya menemukan jawabannya di sana. Menjalankan git gcsecara eksplisit dari baris perintah berhasil untuk saya, sesuai komentar ini .
sashoalm

Jawaban:

82

Hanya dengan melompati pop-up, seperti yang disarankan oleh How to skip "Loose Object" saat menjalankan 'git gui' dalam jawaban yang diterima adalah mengabaikan fakta bahwa Git sedang mengkomunikasikan kemungkinan masalah kinerja kepada Anda. Ini harus diperbaiki dengan menjalankan perintah ini dari baris perintah:

cd path/to/your/git/repo
git gc --aggressive

Dari keluaran git help gc:

Menjalankan sejumlah tugas housekeeping dalam repositori saat ini, seperti mengompresi revisi file (untuk mengurangi ruang disk dan meningkatkan kinerja) dan menghapus objek yang tidak dapat dijangkau yang mungkin telah dibuat dari pemanggilan git add sebelumnya.

Pengguna didorong untuk menjalankan tugas ini secara teratur dalam setiap repositori untuk menjaga pemanfaatan ruang disk yang baik dan kinerja pengoperasian yang baik.

--agresif

Biasanya git gc berjalan sangat cepat sambil memberikan pemanfaatan dan kinerja ruang disk yang baik. Opsi ini akan menyebabkan git gc mengoptimalkan repositori secara lebih agresif dengan mengorbankan lebih banyak waktu. Efek pengoptimalan ini tetap ada, jadi opsi ini hanya perlu digunakan sesekali; setiap beberapa ratus perubahan atau lebih.

Ini akan membuat prompt tidak muncul untuk sementara waktu.

Greg Burghardt
sumber
19
Yang aneh adalah bahwa hanya menjalankan git gcdari baris perintah telah memperbaikinya untuk saya. Mungkin akan git guiberjalan seperti git gc --extra-unaggressive:)
sashoalm
38
git prunesepertinya memperbaikinya jika git gctidak.
Mahn
1
Anda biasanya tidak ingin lari dengan --aggressive; yang menyebabkan gitpenghitungan ulang delta yang biasanya tidak produktif dan sangat memakan waktu; lihat posting ini - manhalaman ini menyesatkan. Mungkin sekadar git gccukup dalam kasus ini.
Jeff Clites
16
Harus digunakan --prune=alluntuk menghilangkan pesan tersebut. Baik git gcpada baris perintah maupun opsi --aggressiveatau --prunemelakukan trik.
daw
1
@JeffClites Artikel yang Anda rujuk (per tanggal ini) berusia 11 tahun, dan menyatakan "Karena alasan ini - agresif mungkin akan dihapus dari halaman manual dan dibiarkan sebagai fitur yang tidak terdokumentasi untuk sementara waktu.". Tanpa menggali lebih jauh, sepertinya aneh bahwa pesan yang rusak itu masih ada. Adakah kemungkinan bahwa perilaku tersebut telah dimodifikasi sejak artikel tersebut ditulis?
pipa
3

Saya menggunakan perintah:

git gc --prune = sekarang

dan tidak ada lagi peringatan benda lepas setelah selesai.

sumber referensi: https://git-scm.com/docs/git-gc

AdvenC
sumber
1
Harus mengatakan bahwa ini adalah solusi yang berhasil untuk saya. Anehnya, git gc --aggressivetidak menghapus peringatan (dan juga tidak mengklik UI, yang tampaknya melakukan yang sederhana git gc).
saeraphin