Hur tar man bort en katalog från git-förrådet?

Jag har två kataloger i mitt GitHub-förråd. Jag vill radera en av dem. Hur kan jag göra det utan att ta bort och återskapa hela arkivet?

Lösning

Remove directory from git and local (ta bort katalogen från git och lokal)

Du kan checka ut 'master' med båda katalogerna;

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

Remove directory from git but NOT local (ta bort katalog från git men INTE från lokal)

Som nämnts i kommentarerna vill du vanligtvis ta bort katalogen från git men inte ta bort den helt och hållet från filsystemet (lokalt).

I det fallet använder du:

git rm -r --cached myFolder
Kommentarer (16)

Om det som karmakaze sa av någon anledning inte fungerar kan du försöka ta bort den katalog du vill ha med hjälp av din filsystemswebbläsare (t.ex. i Windows File Explorer). När du har tagit bort katalogen kan du utfärda kommandot:
git add -A
och sedan
git commit -m 'delete directory'
och sedan
git push origin master.

Kommentarer (2)

Om du tar bort filerna i katalogen (med git rm som de andra svaren förklarar), existerar katalogen inte längre för git. Du kan inte lägga in en tom katalog, och du kan inte heller ta bort en sådan.

Detta skiljer sig från Subversion där du måste ange svn rm emptyfolder/, och det är för övrigt därför man-sidan för git beskriver sig själv som "the stupid content tracker"

Ett svar på "How do I add an empty directory to a git repository" länkar till FAQ on this subject:

För närvarande är utformningen av git-indexet (staging area) endast tillåter filer till listas, och ingen som är tillräckligt kompetent för att för att göra ändringen så att tomma filer kan kataloger har brytt sig tillräckligt mycket om att denna situation för att åtgärda den.

Kataloger läggs till automatiskt när man lägger till filer i dem. Det är att kataloger aldrig behöver läggas till till arkivet, och spåras inte. på egen hand.

Du kan säga "git add" och det kommer att lägga till filer där.

Om du verkligen behöver en katalog för att existerar i checkouts bör du skapa en fil i den. .gitignore fungerar bra för detta syfte; du kan lämna den tom, eller fylla i namnen på filer som du förväntar dig att de ska dyka upp i katalogen.

Kommentarer (0)