Vraag Hoe kan ik een lege map toevoegen aan een Git-repository?


Hoe kan ik een lege map (die geen bestanden bevat) toevoegen aan een Git-repository?


3469
2017-09-22 16:41


oorsprong


antwoorden:


Een andere manier om een ​​map leeg te houden (in de repository) is om een ​​te maken .gitignore bestand in die map die deze vier regels bevat:

# Ignore everything in this directory
*
# Except this file
!.gitignore

Dan hoef je de order niet goed te krijgen zoals je dat in m104's moet doen oplossing.

Dit geeft ook het voordeel dat bestanden in die map niet als "niet-gevonden" verschijnen als je een Git-status uitvoert.

maken @GreenAsJadeis blijvend:

Ik denk dat het de moeite waard is om op te merken dat deze oplossing precies doet wat de vraag was, maar is misschien niet wat veel mensen die naar deze vraag kijken zullen hebben gezocht. Deze oplossing garandeert dat de directory leeg blijft. Er staat: "Ik wil echt niet dat bestanden hier ingecheckt worden". In tegenstelling tot "Ik heb hier nog geen bestanden om hier in te checken, maar ik heb de map hier nodig, misschien komen er later bestanden".


3359
2018-05-31 22:10



Dat kan niet. Zie de Veelgestelde vragen over Git.

Momenteel het ontwerp van de git-index   (staging area) laat alleen bestanden toe om   worden vermeld en niemand bekwaam genoeg   om de wijziging aan te brengen om leeg te maken   directories hebben genoeg omgegeven   deze situatie om het te verhelpen.

Mappen worden automatisch toegevoegd   bij het toevoegen van bestanden erin. Dat   is, directories hoeven nooit te worden toegevoegd   naar de repository en worden niet bijgehouden   zelfstandig.

Je kunt zeggen "git add <dir>" en het   zal daar bestanden aan toevoegen.

Als je echt een map nodig hebt   bestaan ​​in kassa's die u zou moeten maken   bestand erin. .gitignore werkt goed voor   dit doel; je mag het leeg laten,   of vul de namen van bestanden in   verwacht te verschijnen in de directory.


981
2017-09-22 16:42



Maak een leeg bestand met de naam .gitkeep in de directory en voeg dat toe.


594
2017-12-07 16:03



Je zou altijd een README-bestand in de directory kunnen plaatsen met een uitleg van waarom je deze, anders lege, map in de repository wilt.


368
2018-03-14 23:38



touch .keep

Op Linux maakt dit een leeg bestand met de naam .keep. Deze naam heeft de voorkeur boven .gitkeep zoals de eerste agnostisch is voor Git, terwijl de laatste specifiek is voor Git. Ten tweede, zoals een andere gebruiker heeft opgemerkt, de .git voorvoegselconventie moet worden gereserveerd voor bestanden en directory's die Git zelf gebruikt.

Als alternatief, zoals opgemerkt in een andere antwoord, de map kan een beschrijving bevatten README of README.md het dossier in plaats daarvan.

Dit vereist natuurlijk dat de aanwezigheid van het bestand uw toepassing niet zal breken.


259
2018-01-29 04:29



Waarom zouden we lege versies van de mappen nodig hebben?

Eerste dingen eerst:

Een lege map kan geen deel uitmaken van een boom onder het Git-versiesysteem.

Het wordt gewoon niet bijgehouden. Maar er zijn scenario's waarin "versioning" een lege map nuttig kan zijn, bijvoorbeeld:

  • een .... bouwen voorgedefinieerde mappenstructuur voor bruikbare projectmappen, en deze structuur beschikbaar maken voor elke gebruiker / bijdrager van de repository; of, als een gespecialiseerd geval van het bovenstaande, een map maken voor tijdelijke bestanden, zoals een cache/ of logs/ directories
  • sommige projecten werkt simpelweg niet zonder enkele mappen (wat vaak een hint is van een slecht ontworpen project, maar het is een vaak voorkomend scenario in de echte wereld en misschien kunnen er toestemmingsproblemen zijn).

Een aantal voorgestelde oplossingen

Veel gebruikers suggereren:

  1. Een plaatsen README bestand of een ander bestand met bepaalde inhoud om de map niet leeg te maken, of
  2. Een maken .gitignore bestand met een soort "omgekeerde logica" (d.w.z. om alle bestanden op te nemen) die uiteindelijk hetzelfde doel van aanpak # 1 dienen.

Terwijl beide oplossingen werken zeker Ik vind ze niet consistent met een zinvolle benadering van Git-versiebeheer.

  • Waarom moet je valse bestanden of READMEs plaatsen die je misschien niet echt wilt in je project?
  • Waarom gebruiken .gitignore iets doen (bewaring bestanden) dat is precies het tegenovergestelde van waar het voor bedoeld is (Exclusief bestanden), ook al is het mogelijk?

.gitkeep aanpak

Gebruik een leeg bestand genoemd .gitkeep om de aanwezigheid van de map in het versiesysteem te forceren.

Hoewel het misschien niet zo'n groot verschil lijkt:

  • U gebruikt een bestand met de single doel van het houden van de map. Je plaatst daar geen informatie die je niet wilt zetten.

    Je zou READMEs bijvoorbeeld moeten gebruiken als, ook, READMEs met nuttige informatie, niet als een excuus om de map te behouden.

    Scheiding van zorgen is altijd een goede zaak, en je kunt er nog steeds een toevoegen .gitignore om ongewenste bestanden te negeren.

  • Een naam geven .gitkeep maakt het heel duidelijk en rechtlijnig van de bestandsnaam zelf (en ook aan andere ontwikkelaars, wat goed is voor een gedeeld project en een van de kerndoelen van een Git-repository) dat dit bestand is

    • Een bestand niet gerelateerd aan de code (vanwege de leidende punt en de naam)
    • Een bestand dat duidelijk gerelateerd is aan Git
    • Zijn doel (houden) is duidelijk vermeld en consistent en semantisch tegengesteld in de betekenis ervan negeren

Adoptie

Ik heb het gezien .gitkeep aanpak aangenomen door zeer belangrijke kaders zoals Laravel, Angular-CLI.


202
2017-12-04 23:32



Zoals beschreven in andere antwoorden, is Git niet in staat om lege mappen in het verzamelgebied te representeren. (Zie de Veelgestelde vragen over Git.) Als, voor uw doeleinden, een map echter leeg genoeg is als deze een bevat .gitignore alleen bestand, dan kunt u maken .gitignore bestanden in lege mappen alleen via:

find . -type d -empty -exec touch {}/.gitignore \;

119
2018-05-03 15:17