Как добавить в Git репозитории только содержимое папки?
Здравствуйте. У меня примерно такая структура проекта:
есть папка build, а в ней все файлы: скрипты, стили, html и т.д. Это рабочая папка. Она находится в главной папке проекта вместе с другими файлами: gulpfile.js, /node_modules, package.json и т.д.
Собственно вопрос: Мне в репозиторий нужно добавить только содержимое папки build, но создать репозитории в ней я не могу, так как мой gulp обновляет содержимое этой папки посредствам её удаление. Git репозиторий должен быть в корневой папке. Но как тогда добавить только содержимое папки build, без самой папки?
У вас подход к VCS вообще-то какой-то странный. Трекать надо как раз исходники и сами файлы, описывающие билды. А папка build - первой строчкой идет в .gitignore, сразу за ней - node_modules и прочие папки, которые выкачиваются пакетными менеджерами (будь то bower, npm, composer или что угодно).
Ну ладно. Вот я gitignore'ом добавляю в исключение всё что связанно только с разработкой. Но ведь Git репозиторий всё равно в корне проекта должен быть? Или в папке с исходникми?
Alex Fisher: репозиторий в корне проекта. Все ненужное - в gitignore, все нужное - где оно и должно быть - что в корне (какие-то индексные файлы например, конфиги, конфиги билдов и тд), что по своим папочкам. Я не совсем понимаю что вы хотите добиться, почему у вас вообще возник вопрос с корнем репозитория. Возможно, пример вашего репо и целей, которых хотите добиться помог бы прояснить ситуацию?
Игорь Воротнёв: Проблема в том что я не совсем понимаю как должен выглядеть обычный Git репозиторий) Вот пример проекта:
*Главная Папка Проекта*
∟build
∟init
∟node_modules
∟gulpfile.js
∟package.json
Кстати раз появилась возможность поговорить с опытным разработчиком: Где нужно хранить папку с файлами которые загружаются через пакетный менеджер: в корне проекта или в папке init?
Да как угодно :) Как удобнее. Тут нет каких-то жестких правил.
По вашему примеру - я бы сделал так:
- git репа ествественно в корне
- к вашим файлам в корне добавится, соответственно, папка .git и файл .gitignore
- в .gitignore добавляем build, node_modules - обе папки заполняются выполнением одной команды на папку, одна команда собирает файлы из исходников, другая качает модули из внешних репо, это не нужно держать под контролем версий
- по папочка init не совсем понял что у вас там?
> Где нужно хранить папку с файлами которые загружаются через пакетный менеджер: в корне проекта или в папке init?
Я пока не совсем еще понимаю, что у вас в init, что касается всех файлов через пакетные менеджеры - выделите на них свои папки или собирайте все в одну и и подпапки - как удобнее. Есть некоторые "общие практики" типа папок vendor и тд. Погуглите. К тому же, в каждой сфере, почти в каждом языке программирования, иногда даже в рамках какого-то одного фреймворка есть свои "best practices", которые, в это же время, не являются догмами - вы вольны делать так, как вам удобнее. Репозиторий ведь ваш :)
Alex Fisher: тогда зависимости и либы - либо в пакетных папках, либо в vendor, а в init - только свои файлы. То есть, собственный код отдельно, его гит должен отслеживать. Все, что качается или билдится из исходников - в .gitignore