Фиксация пустой структуры папок (с помощью git)
У меня есть каталог data в корень проекта. Он имеет каталог изображений и некоторые файлы. Вот пример:
- сведения/
- картинки/
- image1.jpg
- image2.jpg
- image2.jpg
- результаты.csv
- r.txt
- картинки/
Что писать в gitignore, чтобы игнорировать файлы из data / directory (то есть результаты.csv и r.txt) и файлы из изображений / каталога (изображение.jpg, image2.jpg, image3.jpg)?
когда я его фиксирую, структура папок в репозитории должна быть:
- сведения/
- картинки/
Итак, я просто хочу, чтобы пустая структура папок была завершена.
9 ответов:
в Git вы не можете фиксировать пустые папки, потому что Git фактически не сохраняет папки, только файлы. Вам нужно будет создать некоторый файл-заполнитель внутри этих каталогов, если вы действительно хотите, чтобы они были "пустыми" (т. е. у вас нет фиксируемого контента).
просто добавьте файл
.gitkeep
в каждой папке, которую вы хотите зафиксировать.в windows сделайте это, щелкнув правой кнопкой мыши, когда в папке и выберите: Git bash отсюда. Затем введите:
touch .gitkeep
это легко.
рассказать
.gitignore
игнорировать все, кроме.gitignore
и папки, которые вы хотите сохранить. Поставить.gitignore
в папки, которые вы хотите сохранить в репозитории.содержимое самого верхнего
.gitignore
:# ignore everything except .gitignore and folders that I care about: * !images* !.gitignore
во вложенном
images
папка это ваша.gitignore
:# ignore everything except .gitignore * !.gitignore
обратите внимание, вы должны быть изложены в .gitignore имена папок, которые вы не хотите игнорировать в папке, где это .gitignore находится. В противном случае они, очевидно, игнорируются.
ваши папки в репо, очевидно, не будут пустыми, так как каждый из них будет иметь
.gitignore
в нем, но эта часть может быть проигнорирована, верно. :)
рекурсивно создать .gitkeep files
find . -type d -empty -not -path "./.git/*" -exec touch {}/.gitkeep \;
традиционно всякий раз, когда я хотел зафиксировать и очистить структуру каталогов, я создаю структуру, а затем в конечных каталогах помещаю пустой файл с именем
empty.txt
.затем, когда я помещаю вещи, которые готовы к фиксации, я могу просто удалить
empty.txt
файл и зафиксировать реальные файлы.т. е.
- сведения/
- картинки/
- пустой.txt
рассмотрим также просто делать
mkdir -p data/images
в вашем файле Makefile, если каталог должен быть там во время сборки.Если этого недостаточно, просто создайте пустой файл в data / images и игнорируйте данные.
touch data/images/.gitignore git add data/images/.gitignore git commit -m "Add empty .gitignore to keep data/images around" echo data >> .gitignore git add .gitignore git commit -m "Add data to .gitignore"
вы можете сделать пустую фиксацию с помощью
git commit --allow-empty
, но это не позволит вам зафиксировать пустую структуру папок, поскольку git не знает или не заботится о папках как о самих объектах-только о файлах, которые они содержат.
согласно их FAQ, GIT не отслеживает пустые каталоги.
однако существуют обходные пути, основанные на ваших потребностях и требованиях к проекту.
в основном, если вы хотите отслеживать пустой каталог, вы можете разместить там. Файл может быть пустым, и он будет просто работать. Это Gits способ отслеживания пустой каталог.
другой вариант-предоставить документацию для каталога. Вы можете просто добавьте в него файл readme, описывающий его ожидаемое использование. Git будет отслеживать папку, потому что в ней есть файл, и теперь вы предоставили документацию вам и/или кому-либо еще, кто может использовать исходный код.
Если вы создаете веб-приложение, вам может быть полезно просто добавить индекс.html-файл, который может содержать сообщение об отказе в разрешении, если папка доступна только через приложение. Codeigniter делает это со всеми своими каталогами.
просто добавьте файл с именем as .храните в папке изображений.теперь вы можете выполнить этап и фиксацию, а также добавить папку в систему управления версиями.
создать пустой файл в папке images
$ touch .keep
$ git status
On branch master Your branch is up-to-date with 'origin/master'. Untracked files: (use "git add ..." to include in what will be committed) images/ nothing added to commit but untracked files present (use "git add" to track)
$ git add .
$ git commit -m "adding empty folder"