Git Gui: Sempre ottenere "Questo repository ha attualmente circa 320 oggetti sciolti."


90

Ogni volta che avvio Git Gui su un particolare progetto ricevo questo messaggio:

Questo repository ha attualmente circa 320 oggetti sciolti.

inserisci qui la descrizione dell'immagine

Procedo quindi a fare clic su e ottengo questa finestra di dialogo:

inserisci qui la descrizione dell'immagine

Il fatto è che quando apro di nuovo Git Gui, ricevo lo stesso identico messaggio , di nuovo circa 320 oggetti sciolti! È come se fare clic su non avesse avuto alcun effetto.


Puoi postare l'output di git count-objects -v?
CB Bailey


5
@TheCodeArtist Grazie, ho trovato la risposta lì. L'esecuzione git gcesplicita dalla riga di comando ha funzionato per me, come da questo commento .
sashoalm

Risposte:


82

Saltare semplicemente il pop-up, come suggerisce come saltare il popup "Loose Object" quando si esegue 'git gui' nella risposta accettata, trascura il fatto che Git ti sta comunicando un possibile problema di prestazioni. Questo dovrebbe essere risolvibile eseguendo questo comando dalla riga di comando:

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

Dall'uscita di git help gc:

Esegue una serie di attività di pulizia all'interno del repository corrente, come la compressione delle revisioni dei file (per ridurre lo spazio su disco e aumentare le prestazioni) e la rimozione di oggetti non raggiungibili che potrebbero essere stati creati da precedenti invocazioni di git add.

Gli utenti sono incoraggiati a eseguire questa attività regolarmente all'interno di ciascun repository per mantenere un buon utilizzo dello spazio su disco e buone prestazioni operative.

--aggressivo

Di solito git gc viene eseguito molto rapidamente fornendo un buon utilizzo dello spazio su disco e prestazioni. Questa opzione farà sì che git gc ottimizzi in modo più aggressivo il repository a scapito di impiegare molto più tempo. Gli effetti di questa ottimizzazione sono persistenti, quindi questa opzione deve essere utilizzata solo occasionalmente; ogni poche centinaia di changeset o giù di lì.

Ciò dovrebbe impedire la visualizzazione del messaggio per un po '.


19
Ciò che è strano è che il semplice funzionamento git gcdalla riga di comando lo ha risolto per me. Può essere git guieseguito qualcosa come git gc --extra-unaggressive:)
sashoalm

38
git prunesembra risolverlo quando git gcnon lo fa.
Mahn

1
In genere non vuoi correre con --aggressive; ciò causa il gitricalcolo dei delta che di solito è improduttivo e richiede molto tempo; vedere questo post: la manpagina è fuorviante. Probabilmente git gcin questo caso è sufficiente solo semplice .
Jeff Clites

16
Ho dovuto usare --prune=allper sbarazzarsi del messaggio. Né git gcsulla riga di comando né sulle opzioni --aggressiveo ha --prunefatto il trucco.
daw

1
@JeffClites L'articolo a cui fai riferimento ha (a partire da questa data) 11 anni e afferma "Per questo motivo, l'aggressività verrà probabilmente rimossa dalle manpage e lasciata come funzionalità non documentata per un po '.". Senza scavare oltre, sembra strano che il messaggio rotto sia ancora lì. C'è una possibilità che il comportamento sia stato modificato dopo che l'articolo è stato scritto?
pipe il

3

Uso il comando:

git gc --prune = ora

e non più troppi avvisi di oggetti sciolti dopo averlo fatto.

fonte di riferimento: https://git-scm.com/docs/git-gc


1
Devo dire che questa è stata la soluzione che ha funzionato per me. Stranamente, git gc --aggressivenon ha rimosso l'avviso (e nemmeno facendo clic sull'interfaccia utente, che sembra eseguire un semplice git gc).
saeraphin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.