2012-04-09 19 views
44

Come posso rimuovere una cartella vuota localmente e succede anche ad altri collaboratori che condividono il telecomando tramite pull-push? So che le cartelle non vengono "tracciate" in quel senso da git, ma la domanda rimane.git - come rimuovere la cartella vuota e spingere quella modifica?

ad es. Ho spostato un file in un'altra cartella e ho eseguito la modifica (della mossa).

Ma non posso git rm name la cartella come ottengo "non corrisponde" git rmdir name non esiste.

Posso fare un git clean -f folder ma come viene spinto?

Posso direttamente il file rm ma come posso ottenere la rimozione della directory eseguita correttamente e trasferita al repository e quindi ad altri quando vengono estratti in modo che la cartella esistente venga eliminata?

+1

cosa vuoi dire che la domanda rimane? – manojlds

risposta

75

La risposta breve: Non è possibile modificare le modifiche alle directory (aggiunte, rimosse, ecc.) Perché Git non tiene traccia delle directory da solo.

Secondo il FAQ:

Attualmente il progetto dell'indice git (area di gestione temporanea) consente solo i file per essere elencati, e nessuno abbastanza competente per fare il cambiamento per consentire directory vuote ha curato abbastanza su questo situazione per porvi rimedio.

Le directory vengono aggiunte automaticamente quando si aggiungono file al loro interno. Cioè, le directory non devono mai essere aggiunte al repository e non vengono tracciate da sole.

Quindi, per quanto riguarda Git, la directory vuota non esiste più.

Ho scoperto che prendere l'abitudine di usare git clean -fd elimina la necessità di spingere la rimozione delle directory. Tuttavia, git clean è in grado di rimuovere elementi che potresti non voler rimuovere (inclusi eventuali nuovi file che non hai ancora commesso), quindi tendo a utilizzare prima git clean -fdn per vedere cosa verrà rimosso se utilizzo il comando.

Sembra che tu possa essere costretto a parlare con i tuoi colleghi sviluppatori per ripulire quella directory.

+0

Mercurial ha un approccio più sicuro qui - la directory viene rimossa se vuota: http://stackoverflow.com/a/3917322/913223 e http://superuser.com/questions/81204/how-to-add-an-empty -folder-in-a-mercurial-project –

+0

Questa risposta è incompleta. 'Git svn fetch' mantiene le cartelle vuote.Anche 'git svn rebase' ricrea le cartelle vuote se semplicemente ne rimuove una. – Andry

-6

Un modo leggermente hacky è creare un file falso nella directory, eseguirlo e quindi rimuoverlo. La rimozione rimuoverà anche la directory. Quindi creare Nome/fake.txt

git add name/fake.txt 
git commit -m "message" 
git rm name/fake.txt 
git commit -m "message2" 
+0

non ha funzionato per me :( – lImbus

+1

Questo approccio funziona, ma sul secondo passaggio si desidera eliminare la cartella contenente il file 'rm -rf name' e quindi eseguire il commit della modifica, la cartella non sarà più disponibile – igniteflow

3
git add --all 
git clean -f -d 
git commit -m "trying to remove folders" 
git push 
0

Non si può spingere le cartelle vuote. Ma se vuoi ripulire le cartelle vuote nel tuo repository clonato/locale, commetti le ultime modifiche. Quindi, elimina semplicemente tutti i file dalla cartella .git nella tua copia locale. Quindi resetta nuovamente tutte le modifiche, che rimettono tutti i file ma lascia fuori le directory vuote che non tiene traccia.