Kaip pridėti tuščią katalogą „Git“ saugykloje?

Kaip pridėti tuščią katalogą (kuriame nėra failų) į „Git“ saugyklą?

3652
22 сент. nustatė Laurie Young 22 rugsėjo. 2008-09-22 19:41 '08 at 7:41 pm 2008-09-22 19:41
@ 33 atsakymai
  • 1
  • 2

Kitas būdas padaryti katalogą (beveik) tuščią (saugykloje) yra sukurti .gitignore failą šiame kataloge, kuriame yra šios keturios eilutės:

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

Tada jums nereikia teisingai įdėti užsakymo, kaip ir sprendime m104.

Tai taip pat suteikia pranašumą, kad šiame kataloge esantys failai nebus rodomi kaip „nepažymėti“, kai naudojate „Git“ būseną.

Padaryti @ GreenAsJade pastaba nuolat:

Manau, kad verta paminėti, kad šis sprendimas daro būtent tai, ko prašoma, bet galbūt ne tai, ko ieškojo daug žmonių. Šis sprendimas užtikrina, kad katalogas liktų tuščias. Jame sakoma: „Niekada tikrai nenoriu, kad čia patikrinti failai.“ Skirtingai nuo „Aš neturiu jokių failų, kuriuos reikia patikrinti, bet man reikia katalogo, failai gali būti rodomi vėliau“.

3565
01 июня '09 в 1:10 2009-06-01 01:10 atsakymą pateikė Jamie Flournoy birželio 1 d., 09:10, 2009-06-01 01:10

Jūs negalite. Žr. „ Git“ DUK .

border=0

Šiuo metu „git“ indekso dizainas (sustojimo zona) leidžia tik įrašyti failus, ir niekas nėra pakankamai kompetentingas, kad pakeitimai būtų tušti tuose kataloguose, kad ši situacija būtų ištaisyta.

Katalogai pridedami automatiškai, kai prie jų pridedami failai. Tai, kad katalogai niekada neturėtų būti įtraukti į saugyklą ir nėra stebimi atskirai.

Galima sakyti, kad „ git add <dir> “ ir bus pridėta failų.

Jei tikrai reikia katalogo, skirtą pareiškimams, turite sukurti failą. .gitignore gerai dirba šiam tikslui; galite palikti jį tuščią arba įveskite failų, kuriuos tikitės, kad jie būtų rodomi kataloge, pavadinimus.

1004
22 сент. Atsakymą pateikė Andy Lester rugsėjo 22 d 2008-09-22 19:42 '08, 07:42 pm 2008-09-22 19:42

.gitkeep sukurkite tuščią failą, pavadintą .gitkeep , ir pridėkite jį.

626
07 дек. Atsakymas duotas Artur79 07 Dec. 2011-12-07 19:03 '11, 19:03, 2011-12-07 19:03

README failą visada galite įdėti į katalogą, paaiškindami, kodėl norite, kad jis, kitaip tuščias, būtų saugykloje.

386
15 марта '11 в 2:38 2011-03-15 02:38 atsakymą pateikė John Mee kovo 15 d. 11:38 2011-03-15 02:38
 touch .keep 

„Linux“ sukuria tuščią failą, vadinamą .keep . Šis pavadinimas yra geriau nei „ .gitkeep nes pirmoji „Git“ .gitkeep vertė, o pastaroji - „Git“. Antra, kaip pažymėjo kitas vartotojas, .git prefikso konvencija turėtų būti rezervuota failams ir katalogams, kuriuos pati naudoja „Git“.

Arba, kaip nurodyta kitoje, kataloge gali būti aprašomasis failas README arba README.md .

Žinoma, tai reikalauja, kad failo buvimas nesukeltų jūsų paraiškos pažeidimų.

279
29 янв. ABB atsakymą pateikė sausio 29 d. 2014-01-29 07:29 '14, 7:29 2014-01-29 07:29

Kodėl mums reikia tuščių versijų aplankų

Pirmieji dalykai:

Tuščias katalogas negali būti „Git“ versijos valdymo sistemos medžio dalis.

Jis tiesiog nebus stebimas. Tačiau yra scenarijų, kai tuščių katalogų „versijos kontrolė“ gali būti naudinga, pavyzdžiui:

  • anksto nustatytų aplankų struktūros kūrimas ir šios struktūros teikimas kiekvienam saugyklos naudotojui / gavėjui; arba, kaip pirmiau minėtą atvejį, sukurti laikinų failų aplanką, pvz., cache/ logs/ katalogus, kur norime pateikti aplanką, bet .gitignore turinį
  • dėl to, kad kai kurie projektai neveiks be jokių aplankų (tai dažnai yra prastai suprojektuoto projekto užuomina, tačiau tai yra dažnas realaus pasaulio scenarijus ir, galbūt, gali būti, pavyzdžiui, leidimų problemos).

Kai kurie siūlomi šalinimo būdai

Daugelis vartotojų siūlo:

  1. Įdėkite README ar kitą failą su tam tikru turiniu, kad katalogas nebūtų tuščias, arba
  2. Sukurti .gitignore failą su .gitignore „atvirkštine logika“ (t. .gitignore kad būtų įtraukti visi failai), kuris galiausiai tinka tam pačiam tikslui kaip ir # 1 metodas.

Nors abu sprendimai tikrai veikia, manau, kad jie nesuderinami su prasmingu požiūriu į „Git“ versiją.

  • Kodėl turėtumėte pateikti suklastotus failus ar README failus, kurių jums nereikia jūsų projekte?
  • Kodėl naudokite .gitignore kad galėtumėte daryti dalykus (saugoti failus), kurie yra visiškai priešingi (išskyrus failus), net jei tai įmanoma?

.gitkeep metodas

Naudokite tuščią failą, pavadintą .gitkeep norėdami priversti aplanką būti versijos valdymo sistemoje.

Nors tai gali atrodyti ne toks didelis skirtumas

  • Jūs naudojate failą, kurio tikslas yra išsaugoti aplanką. Neturite informacijos, kurios nenorite pateikti.

    Pvz., Turėtumėte naudoti README kaip README naudingą informaciją, o ne kaip pasiteisinimą aplanko išsaugojimui.

    Pasidalijimo problemos visada yra geros, ir vis tiek galite pridėti .gitignore kad ignoruotumėte nereikalingus failus.

  • Pavadinimas .gitkeep labai aiškus ir suprantamas iš paties failo pavadinimo (taip pat ir kitų kūrėjų, kurie yra naudingi bendram projektui ir yra vienas iš pagrindinių „Git“ saugyklos tikslų), kad šis failas

    • Ne kodinis failas (dėl pradžios ir pavadinimo)
    • Failas yra aiškiai susijęs su „git“
    • Jo tikslas ( išsaugoti ) yra aiškiai suformuluotas, nuoseklus ir semantiškai priešingas savo prasme ignoruoti.

Priėmimas

Aš mačiau .gitkeep požiūrį .gitkeep kurį .gitkeep labai svarbūs .gitkeep pavyzdžiui, Laravel , Angular-CLI .

236
05 дек. Atsakymas pateikiamas Cranio gruodžio 5 d. 2013-12-05 02:32 '13, 2:32 2013-12-05 02:32

Kaip aprašyta kituose atsakymuose, „Git“ negali rodyti tuščių katalogų savo sustojimo zonoje. (Žr. „ Git“ DUK .) Tačiau, jei jūsų tikslais katalogas yra pakankamai tuščias, jei jame yra tik .gitignore failas, galite sukurti .gitignore failus tuščiuose kataloguose tik per:

 find . -type d -empty -exec touch {}/.gitignore \; 
120
03 мая '11 в 18:17 2011-05-03 18:17 atsakymas duotas 03 gegužės 11 d. 18:17 2011-05-03 18:17

Andy Lester yra teisus, bet jei jūsų katalogui reikia tuščios, ne tuščios, galite įdėti tuščią .gitignore failą kaip .gitignore .

Be to, tai yra įgyvendinimo klausimas, o ne pagrindinis klausimas, susijęs su „Git“ saugyklos kūrimu. Kaip minėta daug kartų „Git“ adresų sąraše, priežastis, kodėl ji nebuvo įgyvendinta, yra ta, kad niekas nesirūpino, kad būtų siunčiamas pleistras, o ne tai, kad jis negalėjo būti arba neturėtų būti vykdomas.

58
22 сент. atsakymą pateikė Aristotelis Pagaltzis, rugsėjo 22 d 2008-09-22 20:28 '08 at 8:28 pm 2008-09-22 20:28

Kaip sukurti „ Ruby on Rails“ žurnalo aplanką:

 mkdir log  touch log/.gitkeep  git add log/.gitkeep 

Dabar medis bus įtrauktas į žurnalo katalogą. Tai labai naudinga diegiant, taigi nereikia rašyti žurnalų katalogų kūrimo tvarkos.

Žurnalo failus galima išsaugoti išduodant,

 echo log/dev.log >> .gitignore 

bet jūs tikriausiai jį žinojote.

30
22 окт. Atsakyti Thomas E 22 spalis. 2012-10-22 16:24 '12 at 4:24 pm 2012-10-22 16:24

„Git“ nekalba tuščių katalogų. Daugiau informacijos rasite Git DUK . Siūlomas sprendimas yra .gitignore failo .gitignore į tuščią katalogą. Man nepatinka šis sprendimas, nes .gitignore „paslėptas“ pagal „Unix“ konvenciją. Taip pat nėra paaiškinimo, kodėl katalogai yra tušti.

Siūlau README failą įdėti į tuščią katalogą, paaiškindamas, kodėl katalogas yra tuščias ir kodėl jis turi būti stebimas „Git“. Naudojant „README“ failą, kalbant apie „Git“, katalogas nebėra tuščias.

Tikrasis klausimas yra, kodėl jums reikia tuščio katalogo? Paprastai turite surinkimo scenarijų, kuris prieš sudarydamas / paleisdamas gali sukurti tuščią katalogą. Jei ne, tai atlikite. Tai geresnis sprendimas nei tuščių katalogų įdėjimas į git.

Taigi turite priežastį, kodėl jums reikia tuščio katalogo. Įdėkite šią priežastį į failą README. Tokiu būdu kiti kūrėjai (ir būsimieji) žino, kodėl turėtų būti tuščias katalogas. Taip pat sužinosite, kad galite ištrinti tuščią katalogą, kai išspręsta problema, reikalaujanti tuščio katalogo.


Jei norite įrašyti kiekvieną tuščią katalogą, naudokite šią komandą:

 find -name .git -prune -o -type d -empty -print 

Jei norite sukurti tuščią katalogą README:

 find -name .git -prune -o -type d -empty -exec sh -c \ "echo this directory needs to be empty because reasons > {}/README.emptydir" \; 

Jei norite ignoruoti viską, kas yra kataloge, išskyrus failą README, į .gitignore šias eilutes:

 path/to/emptydir/* !path/to/emptydir/README.emptydir path/to/otheremptydir/* !path/to/otheremptydir/README.emptydir 

Be to, galite tiesiog neįtraukti kiekvieno „README“ failo į:

 path/to/emptydir/* path/to/otheremptydir/* !README.emptydir 

Jei norite, kad kiekvienas README būtų įtrauktas į sąrašą, kai jis jau sukurtas:

 find -name README.emptydir 
27
06 мая '11 в 18:45 2011-05-06 18:45 atsakymas į lesmaną gegužės 06 d. 11 d. 18:45 2011-05-06 18:45

ĮSPĖJIMAS: šis nustatymas neveikia taip, kaip paaiškėjo. Atsiprašome už nepatogumus.

Originalus pranešimas žemiau:

Radau sprendimą žaisti su git vidiniais!

  • Tarkime, kad esate savo saugykloje.
  • Sukurkite tuščią katalogą:

     $ mkdir path/to/empty-folder 
  • Pridėkite jį prie indekso naudodami vandentiekio komandą ir tuščią SHA-1 medį:

     $ git update-index --index-info 040000 tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 path/to/empty-folder 

    Įveskite komandą ir įveskite antrą eilutę. Paspauskite Enter ir tada Ctrl + D, kad užbaigtumėte įrašą. Pastaba: formatas yra [SPACE] režimo [SPACE] SHA-1hash [TAB] tipas (skirtukas yra svarbus, atsakymo formatavimas jo neišsaugo).

  • Kas tai yra! Jūsų tuščias aplankas yra įtrauktas į jūsų indeksą. Viskas, ką jums reikia padaryti, tai pataisyti.

Šis sprendimas yra trumpas ir, matyt, veikia gerai ( žr. EDIT! ), Bet tai nėra taip lengva prisiminti ...

Tuščias SHA-1 medis gali būti rastas sukuriant naują tuščią „Git“ saugyklą, cd ir atleidžiant „ git write-tree , kuris išspausdina tuščią SHA-1 medį.

EDIT:

Aš naudoju šį sprendimą nuo tada, kai jį rasiu. Atrodo, kad jis veikia taip pat, kaip kuriant submodulį, išskyrus tai, kad nė vienas modulis nėra apibrėžtas. Tai sukelia klaidų, kai atleidžiamas git submodule init|update . Problema yra ta, kad git update-index perrašo dalį 040000 tree į 160000 commit .

Be to, „Git“ niekada nematys jokio failo, pateikto šiam keliui, nes mano, kad jie priklauso kitai saugyklai. Tai nemalonus, nes lengva pamiršti!

Tačiau, jei jūs (ir nenorėsite) naudoti jokių „Git“ submodulių savo saugykloje, o tuščias aplankas lieka tuščias arba jei norite, kad „Git“ žinotų apie jo egzistavimą ir ignoruotų jo turinį, galite pereiti prie šio nustatymo. Perėjimas įprastu būdu su sub moduliais reikalauja daugiau veiksmų, kad būtų galima atlikti šį nustatymą.

24
20 янв. atsakymas, kurį pateikė sausio 20 d 2012-01-20 18:50 '12 18:50 2012-01-20 18:50

Galbūt pridedant tuščią katalogą atrodo, kad tai bus mažiausio pasipriešinimo kelias, nes turite scenarijų, kurie tikisi, kad katalogas bus egzistuojantis (galbūt todėl, kad tai yra generuojamų dvejetainių failų tikslas). Kitas būdas būtų pakeisti scenarijus, kad sukurtumėte reikiamą katalogą .

 mkdir --parents .generated/bin ## create a folder for storing generated binaries mv myprogram1 myprogram2 .generated/bin ## populate the directory as needed 

Šiame pavyzdyje galite patikrinti (sugadinti) simbolinę nuorodą į katalogą, kad galėtumėte prieiti prie jo be prefikso „.generated“ (tačiau tai neprivaloma).

 ln -sf .generated/bin bin git add bin 

Jei norite išvalyti šaltinio medį, galite tiesiog:

 rm -rf .generated ## this should be in a "clean" script or in a makefile 

Jei beveik tuščiame aplanke vartojate dažnai naudojamą patvirtinimo metodą, turinio ištrynimas yra nedidelis, neištrinant „.gitignore“ failo.

Jūs galite ignoruoti visus sukurtus failus .gitignore šakniniame kataloge pridėdami:

 .generated 
20
26 окт. atsakymas pateikiamas nobar 26 oct. 2011-10-26 19:33 '11, 19:33, 2011-10-26 19:33

Tarkime, jums reikia tuščio katalogo, pavadinto tmp:

 $ mkdir tmp $ touch tmp/.gitignore $ git add tmp $ echo '*' > tmp/.gitignore $ git commit -m 'Empty directory' tmp 

Kitaip tariant, prieš pridėdami „Git“, norėdami ignoruoti jį (ir visa kita tuščiame kataloge), reikia pridėti .gitignore failą.

19
08 окт. atsakymas pateikiamas m104 08 okt. 2008-10-08 03:13 '08 at 3:13 2008-10-08 03:13

Aš taip pat susidūriau su tuščių katalogų problema. Problema, susijusi su vietos žymeklio failų naudojimu, yra tai, kad jums reikia sukurti ir ištrinti juos, jei jų nereikia (nes vėliau buvo pridėta antrinių katalogų ar failų. Su dideliais šaltinio medžiais šių vietovės failų tvarkymas gali būti sudėtingas ir klaidingas) .

Štai kodėl nusprendžiau parašyti atviro kodo įrankį, kuris gali automatiškai valdyti tokių vietoviečių kūrimą / ištrynimą. Jis parašytas .NET platformai ir veikia pagal Mono (.NET for Linux) ir Windows.

Pažvelkite: http://code.google.com/p/markemptydirs

14
24 июля '09 в 1:33 2009-07-24 01:33 Atsakymą pateikė Jonny Dee, liepos 24 d., 09:33, 2009-07-24 01:33

Jūs negalite ir, deja, niekada negali. Tai pats sprendimas Linus Torvald. Jis žino, kas mums gerai.

Ką aš perskaičiau vieną kartą.

Radau Re: Empty katalogus .. , bet galbūt yra dar vienas.

Jūs turite gyventi su problemomis ... deja.

12
15 марта '15 в 21:17 2015-03-15 21:17 atsakymą pateikė user2334883 15 kovo 15 d. 21:17 2015-03-15 21:17

Pridėjus „ .gitignore failą, jei ketinate įdėti bet kokį turinio kiekį (kurį norite ignoruoti „Git“), gali tekti pridėti vieną eilutę su žvaigždute * , kad įsitikintumėte, jog netyčia nepridėjote turinio.

10
24 сент. Michael Johnson atsakymas, pateiktas rugsėjo 24 d. 2008-09-24 09:43 '08 at 9:43 2008-09-24 09:43

Man patinka „Artur79“ ir „@mjs“ atsakymai, todėl naudoju abiejų derinį ir padariau juos mūsų projektų standartu.

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

Tačiau tik keli mūsų kūrėjai dirba „Mac“ arba „Linux“. Yra daug darbo su „Windows“, ir aš negalėjau rasti lygiavertės paprastos vienos eilutės versijos. Kai kurie pasisekė įdiegti „ Cygwin“ dėl kitų priežasčių, tačiau Cygwin paskyrimas tik dėl to atrodė nereikalingas.

Pakeiskite geresnį sprendimą

Taigi, kadangi dauguma mūsų kūrėjų įdiegė „ Ant“ , pirmas dalykas, apie kurį galvojau, buvo sukurti „Ant build“ failą, kad tai padarytumėte nepriklausomai nuo platformos. Tai vis dar galima rasti čia.

Tačiau vėliau aš maniau, kad tai būtų naudinga mažoje komunalinėje komandoje, todėl aš ją sukūriau naudodamasis „Python“ ir čia paskelbiau „PyPI“. Galite ją įdiegti tiesiog paleisdami:

 pip3 install gitkeep2 

Tai leis jums rekursyviai kurti ir ištrinti .gitkeep failus, taip pat pridėti jiems pranešimus, kad jūsų kolegos galėtų suprasti, kodėl šie katalogai yra svarbūs. Šis paskutinis bitas yra premija. Maniau, kad būtų malonu, jei .gitkeep failai .gitkeep galėtų savarankiškai dokumentuoti.

 $ gitkeep --help Usage: gitkeep [OPTIONS] PATH Add a .gitkeep file to a directory in order to push them into a Git repo even if they're empty. Read more about why this is necessary at: https://git.wiki.kernel.org/inde x.php/Git_FAQ#Can_I_add_empty_directories.3F Options: -r, --recursive Add or remove the .gitkeep files recursively for all sub-directories in the specified path. -l, --let-go Remove the .gitkeep files from the specified path. -e, --empty Create empty .gitkeep files. This will ignore any message provided -m, --message TEXT A message to be included in the .gitkeep file, ideally used to explain why it important to push the specified directory to source control even if it empty. -v, --verbose Print out everything. --help Show this message and exit. 

Tikiuosi, kad tai naudinga.

9
15 мая '17 в 22:08 2017-05-15 22:08 atsakymas duotas Mig82 gegužės 15 d. 17 val

Kaip jau minėta, neįmanoma pridėti tuščių katalogų, bet čia yra vienas įdėklas, kuriame visi katalogai prideda tuščius .gitignore failus.

ruby -e 'require "fileutils" ; Dir.glob(["target_directory","target_directory/**"]).each { |f| FileUtils.touch(File.join(f, ".gitignore")) if File.directory?(f) }'

Aš lengvai įstrigo į rakefile.

8
19 апр. Peterio Hoeg atsakymas, pateiktas balandžio 19 d 2011-04-19 17:10 '11 at 5:10 pm 2011-04-19 17:10

Jamie Flournoy tirpalas puikiai veikia . Štai šiek tiek patobulinta versija .htaccess išsaugojimui:

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

Naudodami šį sprendimą, galite išspręsti tuščią aplanką, pvz., /log , /tmp arba /cache , ir aplankas bus tuščias.

8
22 июня '14 в 16:06 2014-06-22 16:06 atsakymas pateikiamas Romos birželio 22 d., 14 val. 16:06 2014-06-22 16:06

Štai hack, bet juokinga, kad ji veikia (Git 2.2.1). Patinka tai, ką pasiūlė @Teka, tačiau lengviau prisiminti:

  • Pridėkite submodulį į bet kurią saugyklą ( git submodule add path_to_repo )
  • Tai pridės aplanką ir .submodules failą. Priimkite pakeitimus.
  • Ištrinkite .submodules failą ir .submodules pakeitimus.

Dabar turite katalogą, kuris sukuriamas, kai įvykdytas įsipareigojimas. Tačiau įdomu, kad jei peržiūrėsite šio failo medžio objekto turinį, gausite:

mirtinas: Neteisingas objekto pavadinimas b64338b90b4209263b50244d18278c0999867193

Nerekomenduočiau naudoti, nors ji gali neveikti būsimose „Git“ versijose. Tai gali sugadinti saugojimą.

7
24 дек. atsakymą pateikė 24 d. Stanislovo Bashkyrtsev . 2014-12-24 13:24 '14 at 13:24 2014-12-24 13:24

Negalima gauti „Git“, kad būtų galima stebėti katalogus, todėl vienintelis sprendimas yra įtraukti vietos žymos failą į katalogą, kurį norite stebėti „Git“.

Failas gali būti pavadintas ir juose gali būti nieko, bet dauguma žmonių naudoja tuščią failą, vadinamą .gitkeep (nors kai kurie žmonės nori VCS-agnostiko .keep ).

Priedas žymi jį kaip paslėptą failą.

Kita idėja yra pridėti README kuriame paaiškinama, koks katalogas bus naudojamas.

7
27 апр. atsakymas pateikiamas Zaz 27 Bal. 2015-04-27 01:54 '15 at 1:54 2015-04-27 01:54

Aš visada sukuriu funkciją, norint patikrinti norimą aplanko struktūrą ir sukurti ją projektui. Tai pablogina šią problemą, nes tuščias aplankai yra saugomi „Git“ proxy.

 function check_page_custom_folder_structure () { if (!is_dir(TEMPLATEPATH."/page-customs")) mkdir(TEMPLATEPATH."/page-customs"); if (!is_dir(TEMPLATEPATH."/page-customs/css")) mkdir(TEMPLATEPATH."/page-customs/css"); if (!is_dir(TEMPLATEPATH."/page-customs/js")) mkdir(TEMPLATEPATH."/page-customs/js"); } 

Tai yra PHP, tačiau esu įsitikinęs, kad dauguma kalbų palaiko tą pačią funkciją, ir kadangi kuriant aplankus rūpinsis programa, aplankai visada bus.

7
04 апр. Atsakymas, kurį pateikė Mild Fuzz 04 Bal 2011-04-04 13:06 '11, 13:06, 2011-04-04 13:06

„Git“ negali pridėti visiškai tuščio aplanko . Taigi jums reikia kažko panašaus .gitkeep arba .gitkeep arba README arba README.md arba bet kurio pasirinkto tuščio failo.

Katalogai pridedami automatiškai, kai prie jų pridedami failai. Tai reiškia, kad katalogai niekada neturėtų būti įtraukti į saugyklą ir nėra pačios stebimi naudojant „git“ indeksą.

git add <dir> pridės failus į katalogą.

  • <dir>/ pridėti dir.
  • ../ norite eiti į tėvų katalogą.

Komandų eilutės parinktis: touch .gitkeep

4
02 дек. atsakymas pateikiamas abe312 02 dec. 2017-12-02 21:36 '17 21:36 2017-12-02 21:36

Kartais turite susidoroti su blogomis rašytinėmis bibliotekomis ar programine įranga, kurioms reikalingas „tikras“ tuščias ir esamas katalogas. Paprastas .gitignore arba .gitignore gali sugadinti ir sukelti klaidą. Šiais atvejais gali būti naudinga, tačiau nėra garantijos ...

Pirmiausia sukurkite reikiamą katalogą:

 mkdir empty 

Tada pridedate pažeistą simbolinę nuorodą į šį katalogą (bet bet kuriuo kitu atveju, nei pirmiau aprašytas naudojimo pavyzdys, naudokite README su paaiškinimu):

 ln -s .this.directory empty/.keep 

Jei norite ignoruoti šiame kataloge esančius failus, galite juos įtraukti į .gitignore šaknį:

 echo "/empty" >> .gitignore 

Jei norite pridėti ignoruojamą failą, naudokite jo parametrą:

 git add -f empty/.keep 

Po nustatymo jūsų indekse yra sugadinta simbolinė nuoroda, o git sukuria katalogą. Sugedusi nuoroda turi tam tikrų privalumų, nes tai nėra įprastas failas ir nenurodo įprastos rinkmenos. Todėl jis netgi ateina į klausimo dalį „(kurioje nėra failų)“, o ne prasme, bet, manau, kad:

 find empty -type f 

Šios komandos rodo tuščią rezultatą, nes šiame kataloge nėra failų. Todėl dauguma programų, kurios gauna visus aplanke esančius failus, dažniausiai nemato šios nuorodos, bent jau tada, kai jos sukuria „failą“ arba „skaitomos“. Net kai kurie scenarijai neras jokių failų:

 $ php -r "var_export(glob('empty/.*'));" array ( 0 => 'empty/.', 1 => 'empty/..', ) 

Но я настоятельно рекомендую использовать это решение только в особых обстоятельствах, хорошо написанный README в пустом каталоге, как правило, является лучшим решением. (И я не знаю, работает ли это с файловой системой Windows...)

4
ответ дан Trendfischer 02 июня '16 в 19:42 2016-06-02 19:42