Cos'è la potatura Git?


88

Ho tagliato accidentalmente alcuni rami remoti e non so davvero quale sia la conseguenza (ho fatto clic sul pulsante "Elimina rami remoti" in Git Extensions, pensando che avrebbe eliminato un ramo remoto).

La documentazione ufficiale dice "git-prune - Elimina tutti gli oggetti non raggiungibili dal database degli oggetti". Non capisco davvero cosa significhi. Immagino che questo potrebbe aver rimosso i rami uniti, ma non ne sono davvero sicuro.



1
Potrebbe valere la pena guardare git gc: git-scm.com/docs/git-prune .
kovac

Risposte:


93

"Elimina rami remoti" in Git Extensions esegue il git remote prunecomando, che rimuove i rami di monitoraggio remoto locali in cui il ramo non esiste più sul telecomando.

Vedi qui: https://git-scm.com/docs/git-remote#git-remote-empruneem


quindi in pratica dà priorità al tuo telecomando e regola il tuo locale in modo che corrisponda ai tuoi rami remoti?
Honey

3
@ Miele no, rimuove solo i rami di localizzazione remota locale , i rami normali non vengono toccati.
1615903

32

Questa è solo spazzatura che raccoglie i tuoi rami.

Ciò significa che se un oggetto (un commit) non può essere raggiunto in nessuno degli antenati del tuo ramo, verrà rimosso per il database git e come tale non potrà più essere raggiunto.

Questo pulisce un po 'il repository git e lo rende più leggero.


4
Secondo la documentazione, per compiti di manutenzione domestica come questo potrebbe essere meglio fare a git gcpiuttosto che a git pruneche essenzialmente farà anche un git prune.
kovac

1
Downvote: questa risposta (e la domanda per quella materia) confonde git prunee git remote prune. Non sono la stessa cosa, quest'ultima in realtà elimina i rami che non esistono più sul remoto lasciando intatti i rami locali.
JBert

12

È importante sapere che la prugna secca è vincolata al repo . Non tutti sanno che puoi collegare il tuo repository locale a più telecomandi. È utile quando, ad esempio, lavori con un progetto open source e viene forzato a lavorare tramite fork.

Quindi, il comando prune richiede un nome repo. Nella maggior parte dei casi lo è git remote prune origin, ma puoi chiamare il tuo repository qualsiasi cosa, non deve essere origin.


2

Potrebbero esserci rami di funzionalità remote che vengono rimossi dopo averli uniti nel master. Potremmo aver eliminato i rami delle funzionalità per ripulire. Ma se hai estratto il ramo eliminato sul sistema locale e impostato lo stato come monitoraggio, git pull non eliminerà quei rami locali (perché quelli sono già disconnessi dal server). Per ripulire quel tipo di rami orfani locali, il git prunecomando tornerà utile per aiutare.

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.