Git deposuna boş bir qovluq əlavə etmək üçün necə?

Git deposuna boş bir qovluğu (faylları olmayan) necə əlavə etmək olar?

3652
22 сент. Laurie Young tərəfindən təyin olunan 22 sentyabr. 2008-09-22 19:41 '08 at 7:41 pm 2008-09-22 19:41
@ 33 cavab
  • 1
  • 2

.gitignore (demək olar ki) boş qalan (qovluğun) qalan başqa bir yolu aşağıdakı dörd xətdən ibarət olan bu kataloq daxilində .gitignore faylını yaratmaqdır:

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

Sonra m104 həllində olduğu kimi sifarişləri düzgün yerləşdirməyə ehtiyac yoxdur.

Bununla yanaşı, git vəziyyətini idarə edərkən bu kataloqdakı faylların "izinsiz" görünməyəcəyi üstünlük verir.

@ GreenAsJade şərhinin daimi olun:

Düşünürəm ki, bu qərar, soruşulan sualın tam olaraq nə olduğunu, lakin bəlkə də, bir çox insanın bu suala baxmağı araşdıran bir şey deyil. Bu həll kataloqun boş qalmasını təmin edir. Bu deyilir: "Burada faylları yoxlamaq istəmirəm". "Mən yoxlamaq üçün fayl yoxdum, ancaq buraya bir qovluğa ehtiyacım var, fayllar daha sonra görünə bilər."

3565
01 июня '09 в 1:10 2009-06-01 01:10 Cavab Jamie Flournoy tərəfindən 01.06.2009 01:10 'da 01.06.2009 tarixində verilir

Sən bilməzsən. Git FAQ'sinə baxın.

border=0

Hal-hazırda, git indeksinin dizaynı (səhnə sahəsi) yalnız faylların siyahıya alınmasına imkan verir və bu vəziyyətin düzəldilməsi üçün kifayət qədər kataloq dəyişiklikləri üçün kifayət qədər yetərli deyil.

Dosyalar onlara əlavə olunduqda kataloqlar avtomatik olaraq əlavə edilir. Bu kataloq heç vaxt özbaşına əlavə edilməməlidir və özləri izlənməməlidir.

" git add <dir> " deyə bilərsiniz və orada faylları əlavə edəcək.

Bəyanatlar üçün həqiqətən bir qovluğa ehtiyacınız varsa, bir fayl yaratmalısınız. .gitignore bu məqsədlə yaxşı işləyir; onu boş buraxa və ya kataloqda görünməsini gözlədiyiniz faylların adlarını daxil edə bilərsiniz.

1004
22 сент. Cavab Andy Lester tərəfindən verilir Sep 22 2008-09-22 19:42 '08 at 7:42 pm 2008-09-22 19:42

.gitkeep adlı boş bir fayl yaradın və əlavə edin.

626
07 дек. Cavab verildi Artur79 07 Dekabr. 2011-12-07 19:03 '11 'da 19:03' da 2011-12-07 19:03

README faylını həmişə bir nizam istəməyinizə, əks halda boş saxlaya bilən bir qovluğa yerləşdirə bilərsiniz.

386
15 марта '11 в 2:38 2011-03-15 02:38 Cavab John Mee tərəfindən 15 Mart 2011-ci ildə 2: 38-də verilmişdir 2011-03-15 02:38
 touch .keep 

Linuxda bu, .keep adlı boş bir fayl yaradır. Bu ad Git üçün ilk .gitkeep çünki Git ilk agnostik dəyəri, ikincisi isə .gitkeep aiddir. İkincisi, başqa bir istifadəçi qeyd etdiyimiz kimi, .git prefiks konvensiyası .git istifadə etdiyi fayllar və .git üçün .git .

Alternativ olaraq, başqa göstərildiyi kimi, kataloq təsviri README və ya README.md faylı README.md bilər .

Əlbəttə ki, bu faylın mövcudluğu ərizənizin pozulmasına səbəb olmur.

279
29 янв. Cavab 29 yanvarda ABB tərəfindən verilir . 2014-01-29 07:29 '14 da 7:29 2014-01-29 07:29

Niyə boş sürümlü qovluqlara ehtiyacımız var

İlk şey:

Boş bir qovluq bir Git versiyası nəzarət sistemində bir ağacın bir hissəsi ola bilməz.

Sadəcə izlənilməyəcək. Lakin, boş dizinlerin "versiyası nəzarət" funksiyaları faydalı ola biləcəyi ssenarilər var, məsələn:

  • əvvəlcədən təyin edilmiş bir qovluq quruluşu yaratmaq və bu strukturu depoların hər bir istifadəçisi / iştirakçısı üçün təmin etmək; ya da, yuxarıda göstərilən xüsusi bir vəziyyət kimi, qovluğu təmin etmək istədiyimiz cache/ və ya logs/ .gitignore kimi müvəqqəti fayllar üçün qovluq yaradır, lakin .gitignore məzmunu
  • bəzi layihələrin heç bir qovluq olmadan işləməyəcəyi (tez-tez pis dizayn edilmiş bir layihənin işarədir, lakin bu, tez-tez real-dünya ssenarisidir və bəlkə də, məsələn, icazə ilə bağlı problemlər ola bilər).

Bəzi həllər təklif edir

Bir çox istifadəçi təklif edir:

  1. Dizinin boş olmaması üçün README və ya bəzi məzmunu olan digər bir faylın yerləşdirilməsi və ya
  2. .gitignore "ters mantıksal" ( .gitignore ) bütün faylları daxil etmək üçün .gitignore faylının yaradılması, nəticədə, # 1 yanaşma ilə eyni məqsədə xidmət edir.

Hər iki həllin əlbəttə işləməsinə baxmayaraq, onları Git versiyasına mənalı bir yanaşma ilə uyğun gəlmir.

  • Niyə layihədə ehtiyac duymayacağınız saxta faylları və ya README faylları qoymalısınız?
  • .gitignore , nə üçün (fayllar istisna olmaqla) nəzərdə .gitignore tamamilə zidd olan şeyləri (mağaza faylları) etmək üçün .gitignore istifadə edirsiniz?

gitkeep yanaşma

.gitkeep idarəetmə sistemində iştirak etmək üçün məcbur etmək üçün. .gitkeep adlı boş bir fayldan istifadə edin.

Baxmayaraq ki, bu qədər fərq yoxdur

  • Bir məqalənin qovluğu saxlaya biləcəyi bir fayl istifadə edirsiniz. Siz orada yerləşdirmək istəmədiyiniz məlumatları vermirsiniz.

    Məsələn, README'yi faydalı bir məlumat olan README kimi istifadə etməli və bir qovluq saxlamaq üçün bir bəhanə kimi istifadə etməməlisiniz.

    .gitignore problemlər həmişə yaxşıdır və gərəksiz faylları .gitignore üçün .gitignore əlavə edə bilərsiniz.

  • Adı təyin etmək .gitkeep faylın özündən (həm də ümumi layihə üçün yaxşı olan və Git deposunun əsas məqsədlərindən biri olan digər .gitkeep çox aydın və anlaşılırdır ki, bu fayl

    • Qeyri-kod fayl (başlanğıc nöqtəsinə və adına görə)
    • Fayl Git ilə açıq şəkildə əlaqələndirilir.
    • Onun məqsədi ( qorunmaq ) aydın şəkildə ifadə edilir, izahlı və semantik cəhətdən ziddiyyət təşkil etməz.

Qəbul

.gitkeep yanaşması çox əhəmiyyətli bir .gitkeep görüldü. Laravel , Angular-CLI kimi .gitkeep .

236
05 дек. Cavab Cranio 05 dekabr. 2013-12-05 02:32 '13 'da 2:32' de 2013-12-05 02:32

Digər cavablarda təsvir edildiyi kimi, Git öz təyinat sahəsindəki boş qovluqları təmsil edə bilməz. Lakin, məqsədiniz üçün kifayət qədər boş olsa, yalnız .gitignore faylını ehtiva .gitignore , sonra yalnız .gitignore fayllarını boş qovluqlarda yarada bilərsiniz:

 find . -type d -empty -exec touch {}/.gitignore \; 
120
03 мая '11 в 18:17 2011-05-03 18:17 cavab mjs 03 May '11 saat 18:17 'də verildi 2011-05-03 18:17

Andy Lester doğru, ancaq kataloqunuzun boş olması vacib deyil, boş deyilsə, boş bir .gitignore faylını bir .gitignore həll edə bilərsiniz.

Bununla yanaşı, bu, "Git" deposunun dizaynı ilə bağlı bir məsələ deyil. Git poçt siyahısında bir çox dəfə qeyd edildiyi kimi, tətbiq edilmədiyi səbəbi heç kimin bunun üçün yamaq göndərib qayğı deyil və ya icra edilməməsi lazım deyil.

58
22 сент. Cavab Aristotle Pagaltzis tərəfindən verilib 22 sentyabr 2008-09-22 20:28 '08 saat 20:28 'da 2008-09-22 20:28

Rails jurnalında Ruby yaratmaq üçün necə:

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

İndi ağac qovluğu ağaca daxil ediləcək. Bu yerləşdirmə zamanı çox faydalıdır, belə ki, jurnal kataloqları yaratmaq üçün prosedur yazmaq lazım deyil.

Gündəlik fayllar verilə bilər,

 echo log/dev.log >> .gitignore 

ancaq bunu bilirdiniz.

30
22 окт. 22 oktyabrda Tomas E tərəfindən cavab verildi . 2012-10-22 16:24 '12 at 4:24 pm 2012-10-22 16:24

Git boş qovluqları izləmir. Daha ətraflı məlumat üçün Git FAQ-ə baxın . Təklif olunan həlli .gitignore faylını boş bir .gitignore yerləşdirməkdir. Bu həllini .gitignore çünki .gitignore Unix konvensiyasından "gizlidir". Dizinlərin niyə boş olduğunu heç bir izah yoxdur.

README faylını boş bir qovluğa qoyaraq, dizinin boş olduğunu və Niyə Git'te izlenmesi gerektiğini açıklamanızı öneririm. Yerdəki README faylı ilə, Git narahat olduğuna görə, dizin artıq boş deyil.

Əsl sual, niyə gitdə boş bir qovluğa ehtiyacınız var? Çoğunlukla derleme / çalıştırmadan önce boş bir dizin oluşturabilecek bir montaj komutunuz var. Əgər yoxsa, bunu. Bu, gitdəki boş qovluqların yerləşdirilməsindən daha yaxşı bir həlldir.

Beləliklə, gitdə boş bir qovluğa ehtiyacınız var. Bu səbəbi README faylına qoyun. Beləliklə, digər developers (və gələcək olanlar) niyə boş bir qovluğun olması lazım olduğunu bilirlər. Boş bir qovluğu tələb edən bir problem həll edildikdə də boş bir qovluğu silə biləcəyinizi öyrənəcəksiniz.


Hər bir boş qovluğu siyahıya salmaq üçün aşağıdakı əmrləri istifadə edin:

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

Hər bir boş qovluğa bir README tutucu yaratmaq üçün:

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

README faylı xaricindəki hər şeyi ignore etmək üçün, .gitignore aşağıdakı xətləri .gitignore :

 path/to/emptydir*.* !/app/data*.md 

Затем вы можете зафиксировать описательные файлы README.md(или пустые файлы, это не имеет значения, если вы в этом случае можете настроить их однозначно как с помощью *.md ), чтобы гарантировать, что все каталоги остаются часть репо, но файлы (с расширениями) игнорируются. ОГРАНИЧЕНИЕ: . недопустимы в именах каталогов!

Вы можете заполнить все эти каталоги файлами xml/images и т.д. и добавить дополнительные каталоги под /app/data/ с течением времени, которые потребуются для хранения вашего приложения (с файлами README.md, предназначенными для записи в описании что для каждого каталога хранения точно).

Нет необходимости дополнительно изменять ваш .gitignore или децентрализовать, создав новый .gitignore для каждого нового каталога. Наверное, это не самое умное решение, но оно красноречиво и всегда работает для меня. Ницца и просто!;)

2019

ответ дан ajmedway 11 мая '17 в 16:36 2017-05-11 16:36

Sən bilməzsən. Это преднамеренное дизайнерское решение Git. В принципе, целью системы управления исходным кодом, такой как Git, является управление исходным кодом, а пустые каталоги не являются исходным кодом. Git также часто описывается как трекер контента, и опять же, пустые каталоги не довольны (на самом деле наоборот), поэтому они не отслеживаются.

4
ответ дан Jörg W Mittag 22 сент. '08 в 22:50 2008-09-22 22:50

Если вы хотите добавить пустой каталог в репозиторий Git, вы можете сделать одно. Создайте файл с именем .gitignore , а затем запишите его внутри него:

 /directory/* !.gitignore 

Первая строка сообщает Git игнорировать все в этом каталоге. Вторая строка сообщает Git не игнорировать файл .gitignore.

3
ответ дан shiminsh 02 дек. '17 в 21:36 2017-12-02 21:36

Добавление еще одной опции в сражение.

Предполагая, что вы хотели бы добавить каталог в git , который для всех целей, связанных с git , должен оставаться пустым и никогда не отслеживать его содержимое, .gitignore , как предлагалось много раз здесь, будет делать трюк.

Формат, как уже упоминалось, следующий:

 * !.gitignore 

Теперь, если вам нужен способ сделать это в командной строке одним махом, в то время как внутри каталога, который вы хотите добавить, вы можете выполнить:

 $ echo "*" > .gitignore  echo '!.gitignore' >> .gitignore  git add .gitignore 

Я сам, у меня есть оболочка script, которую я использую для этого. Назовите script все, что вы хотите, и добавьте его где-нибудь в свой путь включения или обратитесь к нему напрямую:

 #!/bin/bash dir='' if [ "$1" != "" ]; then dir="$1/" fi echo "*" > $dir.gitignore  \ echo '!.gitignore' >> $dir.gitignore  \ git add $dir.gitignore 

С помощью этого вы можете выполнить его из каталога, который вы хотите добавить, или ссылаться на каталог как на первый и только на параметр:

 $ ignore_dir ./some/directory 

Еще один вариант (в ответ на комментарий от @GreenAsJade), если вы хотите отслеживать пустую папку, в которой МОЖЕТ содержать отслеживаемые файлы в будущем, но пока пусто, вы можете опустить * из .gitignore и проверить это. В принципе, весь файл говорит: "Не игнорируйте меня", но в противном случае каталог пуст и отслеживается.

Ваш файл .gitignore будет выглядеть так:

 !.gitignore 

Чтобы он, проверьте это, и у вас есть пустой, но отслеженный каталог, в который вы можете отслеживать файлы через некоторое время.

Причина, по которой я предлагаю сохранить одну строку в файле, заключается в том, что она дает цель .gitignore . В противном случае кто-то из них может подумать, чтобы удалить его. Это может помочь, если вы разместите комментарий над строкой.

3
ответ дан Mike 26 мая '16 в 4:18 2016-05-26 04:18

Просто добавьте empty.txt в каталог.

2
ответ дан Daniel Alexiuc 02 дек. '17 в 21:36 2017-12-02 21:36

Добавьте файл в пустую папку и назовите его PlaceHolder .

2
ответ дан Amir Saniyan 02 дек. '17 в 21:36 2017-12-02 21:36
  • 1
  • 2

Другие вопросы по меткам или Задайте вопрос