Come rimuovere una directory dal repository git?

Ho 2 directory sul mio repository GitHub. Vorrei eliminare uno di loro. Come potrei farlo senza cancellare e ricreare l’intero repository?

Rimuovi la directory da git e local

Puoi controllare “master” con entrambe le directory;

git rm -r one-of-the-directories git commit -m "Remove duplicated directory" git push origin  (typically 'master', but not always) 

Rimuovi la directory da git ma NON locale

Come menzionato nei commenti, quello che di solito vuoi fare è rimuovere questa directory da git ma non eliminarla interamente dal filesystem (locale)

In tal caso utilizzare:

 git rm -r --cached myFolder 

Per rimuovere la cartella / directory solo dal repository git e non dal locale, provare 3 semplici comandi.


Passi per rimuovere la directory

 git rm -r --cached FolderName git commit -m "Removed folder from repository" git push origin master 

Passi per ignorare quella cartella nei prossimi commit

Per ignorare quella cartella dai commit successivi, crea un file nella radice denominato .gitignore e inserisci il nome di quella cartella. Puoi metterne quanti ne vuoi

Il file .gitignore sarà simile a questo

 /FolderName 

rimuovi directory

Se, per qualche ragione, quello che ha detto karmakaze non funziona, puoi provare a cancellare la directory che vuoi cancellare (tramite il tuo browser del file system), emettendo il comando
git add -A
e poi
git commit -m 'deleting directory'
e poi
git push origin master .

Puoi provare questo: git rm -rf

Costringerà a eliminare la directory.

Se rimuovi i file nella directory (con git rm come spiegano le altre risposte), allora la directory non esiste più per quanto riguarda git. Non puoi impegnare una directory vuota, né puoi rimuoverne una.

Questo è diverso da quello di subversion in cui devi esplicitamente svn rm emptyfolder/ , ed è incidentalmente il motivo per cui la pagina man di git si descrive come “lo stupido content tracker”

Una risposta su “Come aggiungo una directory vuota a un repository git” si collega alle FAQ su questo argomento :

Attualmente il design dell’indice git (area di staging) consente solo di elencare i file, e nessuno abbastanza competente per fare in modo che la modifica consenta alle directory vuote abbia a cuore abbastanza questa 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.

Puoi dire ” git add

” e aggiungerà file lì.

Se hai davvero bisogno di una directory per esistere in cassa, devi creare un file al suo interno. .gitignore funziona bene per questo scopo; puoi lasciarlo vuoto o inserire i nomi dei file che ti aspetti di visualizzare nella directory.

Vai alla tua git Directory quindi digita il seguente comando: rm -rf < Nome directory >

Dopo aver cancellato la directory, confermare le modifiche con: git commit -m “Your Commit Message”

Quindi premere semplicemente le modifiche sulla directory GIT remota: git push origin < Nome ramo >

Di solito uso git add --all per rimuovere file / cartelle dai repository remoti

 rm -r folder_name git add --all git commit -m "some comment" git push origin master 

master può essere sostituito da qualsiasi altro ramo del repository.

È ansible eliminare la cartella localmente e quindi premere, come segue:

 git rm -r folder_name git commit -m "your commit" git push origin master 

Puoi usare Attlasian Source Tree (Windows) ( https://www.atlassian.com/software/sourcetree/overview ). Basta selezionare i file dall’albero e premere il pulsante “Rimuovi” in alto. I file saranno cancellati dal repository locale e dal database git locale. Quindi commetti, quindi premi.

Uno dei miei colleghi ha suggerito BFG Repo-Cleaner che penso sia potente. Non solo elimina i dati indesiderati, ma pulisce anche il tuo repository da qualsiasi informazione di commit correlata.

Il primo comando git deve sapere chi sei prima di eliminare qualsiasi cosa

  1. git init
  2. git config user.name “qualcuno”
  3. git config user.email “qualcuno@someplace.com”
  4. git rm -r
  5. git commit -m “eliminazione di dir”
  6. git push origin master

Per aggiungere una nuova directory:

 mkdir  

Ma ora Git non è a conoscenza di questa nuova directory, perché Git tiene traccia dei file non delle directory DIRECTORY

 git status 

git non sarà a conoscenza del cambiamento che abbiamo apportato, quindi aggiungiamo il file .keep nascosto per rendere Git consapevole di questo nuovo cambiamento.

 touch /YOUR-directory/.keep 

Ora se si colpisce lo git status Git sarà a conoscenza delle modifiche.

E se vuoi cancellare la directory, dovresti usare questo comando.

 rm -r  

e Se hai controllato usando git status , vedrai che la directory è stata rimossa.