2010-11-11 20 views
17

Mi è capitato spesso. Sto lavorando su un ramo principale e ho bisogno di testare un plugin, quindi creo un nuovo ramo e lo controllo. Scarico il plug-in nella directory del progetto e lo provo. Quindi torno al ramo principale e cancello il ramo che avevo creato.Perché Git non rimuove alcuni file quando cambio un ramo?

Che cosa succede succede che i file del plugin rimangono nella directory del progetto. Mi chiedo se questo è un comportamento normale. Cosa devo fare per avere un passaggio senza interruzioni tra le filiali?

+0

@ipsum: Risposta? –

+3

git non rimuoverà i file non tracciati dalla tua copia di lavoro, quindi a meno che non hai aggiunto i file del plugin e creato un commit sul nuovo ramo git non farà nulla ai tuoi file plugin – knittl

+1

@knittl: * that * is the answer. Potrebbe anche pubblicarlo. (Insieme a una menzione di 'git clean', forse.) – Cascabel

risposta

12

git non rimuoverà i file non tracciati dalla copia di lavoro, quindi a meno che non hai aggiunto i file del plugin e creato un commit sul nuovo ramo git non farà nulla per i tuoi file plugin.

se si desidera rimuovere il file non tracciata dal vostro albero di lavoro, utilizzare git clean - attenzione, rimuoverà tutti i file non tracciata dal disco e non c'è modo di recuperare da quella (senza utilizzare il software Undelete)

+0

Il potenziale pericolo di 'git clean', naturalmente, è il motivo per cui non farà nulla a meno che non si passi l'opzione' -f'. (Forse utile per questo caso - puoi usarlo su percorsi specifici.) – Cascabel

+0

perché "git non rimuoverà i file non tracciati dalla tua copia di lavoro"? il mio prossimo 'git add' aggiungerà quei file non tracciati da rami diversi? – joetsuihk

+0

@joetsuihk: i file non tracciati nella directory di lavoro non appartengono a nessun ramo, appartengono alla directory di lavoro. se tu "git aggiungi" i file non tracciati, saranno inclusi nel prossimo commit – knittl

0

prova checkout -f

vedere git help out:

procedere anche se l'indice o l'albero di lavoro si differenzia da HEAD. Viene utilizzato per eliminare le modifiche locali.

+2

Non penso che questo sia ciò che sta sperimentando l'OP. La cassa procede, ma lascia alcuni file lì. – Cascabel

+0

Sono d'accordo con Jefromi –

0

Se siete passare avanti e indietro tra i rami in cui le strutture di directory sono diverse, e si scopre che ci sono alcuni manufatti lasciati, potrebbe essere necessario eseguire:

git clean -df 

Questa sarà "delete" "forza". Perderai TUTTI i file non tracciati, penso che questo potrebbe essere ad un passo da:

git reset --hard 
Problemi correlati