git – hoe verwijder je een lege map en druk je die wijziging door?

Hoe kan ik lokaal een lege map verwijderen en dat ook laten gebeuren voor andere medewerkers die de afstandsbediening delen via pull-push? Ik weet dat mappen in die zin niet worden ‘gevolgd’ door git, maar de vraag blijft.

bijv. Ik heb een bestand naar een andere map verplaatst en de wijziging (van de verplaatsing) doorgevoerd.

Maar ik kan de map git rm nameniet gebruiken omdat ik krijg “komt niet overeen”
git rmdir namebestaat niet.

Ik kan een git clean -f folderdoen, maar hoe wordt dat gepusht?

Ik kan het bestand direct rmnemen, maar hoe zorg ik ervoor dat die directoryverwijdering correct wordt uitgevoerd en naar de repository wordt gepusht en vervolgens naar anderen wanneer ze het bestand verwijderen, zodat hun bestaande map wordt verwijderd?


Antwoord 1, autoriteit 100%

Het korte antwoord: Je kunt geen wijzigingen in directory’s pushen (toegevoegd, verwijderd, etc.) omdat Git zelf geen directory’s bijhoudt.

Volgens de FAQ:

Momenteel staat het ontwerp van de git-index (staging-gebied) alleen bestanden toe, en niemand die competent genoeg is om de wijziging aan te brengen om lege mappen toe te staan, heeft genoeg om deze situatie gegeven om het te verhelpen.

Mappen worden automatisch toegevoegd wanneer er bestanden in worden toegevoegd. Dat wil zeggen, mappen hoeven nooit aan de repository te worden toegevoegd en worden niet op zichzelf gevolgd.

Dus wat Git betreft, je lege directory bestaat niet meer.

Ik heb ontdekt dat door de gewoonte te krijgen om git clean -fdte gebruiken, het verwijderen van mappen niet meer nodig is. git cleankan echter items verwijderen die u wil misschien niet verwijderd worden (inclusief eventuele nieuwe bestanden die je nog niet hebt vastgelegd), dus ik heb de neiging om eerst git clean -fdnte gebruiken om te zien wat zalworden verwijderd als ik het commando gebruik .

Het lijkt erop dat je misschien gedwongen wordt om met je mede-ontwikkelaars te praten om die map op te schonen.


Antwoord 2, autoriteit 8%

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

Antwoord 3

Je kunt geen lege mappen pushen. Maar als je lege mappen in je gekloonde/lokale repo wilt opschonen, voer dan je laatste wijzigingen door. Verwijder vervolgens eenvoudig alle bestanden behalve de .git-map in je lokale kopie. Stel vervolgens alle wijzigingen opnieuw in, waarbij alle bestanden worden teruggezet, maar de lege mappen die niet worden bijgehouden, worden weggelaten.


Antwoord 4

Een enigszins omslachtige manier om dit te omzeilen is door een nepbestand in de map te maken, het vast te leggen en vervolgens te verwijderen. Als u het verwijdert, wordt ook de map verwijderd.
Dus maak naam/nep.txt

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

Other episodes