Domanda

Ho il mio repo @ github. Ho fatto qualche lavoro a casa e lo spinse a Github. Ha coinvolto alcuni cancellazione di file e directory. Ora sono sulla mia casella di lavoro, che aveva una copia del codice prima di eliminare i file e le directory.

ho rilasciato il seguente:

git remote update
git checkout HEAD
git pull origin HEAD

E 'cancellato tutti i file che dovrebbe avere, ma non le directory dei file erano in.

Due domande:

  1. Perché è non rimuove le directory?
  2. C'è un comando git posso rilasciare allo stato attuale per rimuoverli?
È stato utile?

Soluzione

Git non tiene le directory, in modo da non rimuovere quelli che diventano vuote a seguito di una fusione o di altro cambiamento. Tuttavia, è possibile utilizzare git clean -fd per rimuovere directory non monitorate (i mezzi -fd bandiera f rimozione Orce di file non monitorate e d irectories).

Altri suggerimenti

Nell'ambito della maggior parte delle operazioni che alterano l'albero di lavoro (tirare, merge, verifica, ecc) git rimuovere le directory che sono fatti da vuoto tale operazione (cioè git rimosso l'ultimo file).

git non rimuoverà qualsiasi directory che non sono completamente vuoti, quindi se hai nascosto o ignorato i file poi basta perché git rimuove l'ultima rintracciato file da quella cartella non significa necessariamente che git sarà in grado di rimuovere tale directory. git non considera che si tratta da una condizione di errore in modo da non lamentarsi.

Git non tiene directory, i file (con il loro percorso). Git crea tutte le directory per quei sentieri se non esistono ancora (cool!), Tuttavia lo fa non eliminarli se tutti i file contenuti in un percorso vengono spostati o cancellati (non fredda ☹. .. ma non c'è motivo).

Soluzione (una volta che avete tirato / avanzare rapidamente / fusione):

git stash --include-untracked
git clean -fd
git stash pop

Se non si stash prima clean, si perderanno tutti i file non monitorate (irreversibile).

Nota: dal momento che questo pulisce tutti i file ignorati troppo, potrebbe essere necessario eseguire alcuni dei vostri script di build di nuovo per ricreare i metadati del progetto (es: ./gradlew eclipse). Questo anche eliminare le directory che sono vuote e che non sono mai stati parte di percorsi di file git.

Git non tiene directory attualmente (vedi git wiki ), < strike> che è, è possibile aggiungere né directory vuote né sarà git rimuovere le directory che finiscono per vuoto (EDIT:.! Grazie, Manni, mi sbagliavo non è possibile Aggiungi directory vuote, ma git sarà Rimuovi le directory che diventano vuoto perchè il loro contenuto rintracciato è stato eliminato. )

Per quanto riguarda il comando per rimuovere le directory vuote:. Che dipende dal sistema operativo

Per Linux è possibile utilizzare, per es.,

find -depth -type d -empty -exec rmdir {} \;

Tuttavia, questo rimuoverà tutti le directory vuote!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top