Создание новых проектов из существующего "шаблонного" репо

Я создал проект "шаблона" Laravel, который содержит мои обычно используемые функции/библиотеки.

Каков правильный процесс git для использования этого шаблона в качестве основы для новых проектов? Я могу представить два варианта:

  • Введите boilerplate в newproject и начните. Я не намерен тянуть newproject обратно обратно в boilerplate.
  • Clone boilerplate и обновите удаленное начало до нового чистого репо.

Я склоняюсь к второму варианту, так как он похож на хороший чистый раскол от шаблона. Смогу ли я потерять какие-либо интересные возможности git, выполнив это?

Ответ 1

Обновление от июня 2019 года, 6 лет спустя:

См. " Создание новых хранилищ с помощью шаблонов хранилищ ".

Совместное использование стандартного кода в кодовых базах является постоянной моделью при разработке программного обеспечения.
Начальная загрузка нового проекта с нашими любимыми инструментами и структурами каталогов помогает программистам перейти от идеи к "Hello world!" более эффективно и с меньшей ручной настройкой.

Сегодня я был рад представить шаблоны репозитория, чтобы сделать шаблонное управление кодом и распространение первоклассным гражданином на GitHub.

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

https://github.blog/wp-content/uploads/2019/06/repository-template.gif

Каждый репозиторий шаблонов получает новую конечную точку URL с именем /generate которая позволяет более эффективно распространять шаблон


Оригинальный ответ 2013:

Учитывая, что вы будете хранить свой проект на Github из одного из шаблонов, включенных в boilerplate проект GitHub, я бы:

  • Создайте новый пустой репо на GitHub (нет связи с boilerplate, нет необходимости в форке)
  • клонировать это
  • boilerplate клона в отдельном месте на вашем диске
  • скопируйте правильный шаблон из локального клона boilerplate в ваш новый локально клонированный репозиторий Github
  • (git add, git commit) Верните этот конкретный шаблон обратно в ваш новый репозиторий Github.
  • начать работать оттуда

Ответ 2

"Вилка" не является концепцией Git. Вы путаете Git с Github? Если вы хотите развернуть проект на Github, то он будет таким же, как клонирование репо, а клонирование будет звучать так, как будто вы ищете. Вы бы никогда не вносили изменения обратно в "шаблонный" репо. Тем не менее, вы можете использовать слияние или перезагрузку, чтобы вносить обновления в шаблонный репо в проекты, которые от него отталкиваются. Если ничего подобного не желательно, то зачем делать это с помощью Git? Просто сделайте рекурсивную копию каталога и начните оттуда.

Ответ 3

Ничего плохого в ответе @VonC, но вы можете использовать hub для создания однострочный файл, который эффективно использует новое репо (локально и удаленно) на основе вашего репо-сервера:

clonefork() {
    hub clone "$1"
    cd "${1##*/}"
    hub fork
}

В вашей оболочке:

$ clonefork user/seed-repo

Под "клонированием" вашего семенного репо вы также получаете сетевой график, показывающий все созданные репозитории.

Ответ 4

Следуя указаниям @VonC, я создал функцию для своего терминала и вставил ее в свой псевдоним.

Каждый раз, когда я начинаю новый проект, я создаю репозиторий на GitHub, беру точное имя проекта и затем просто набираю на моем терминале "bp newProject"

bp () {
# Clone the boilerplate project from GitHub
git clone https://github.com/username/boilerplate.git;

# Rename the boilerplate folder to newProject
mv boilerplate "[email protected]";

# Access the newProject folder
cd "[email protected]";

# Delet the .git folder
rm -rf .git;

# Initialize git
git init;

# Add;
git add .;

# Commit using 'initial setup; as  message;
git commit -m 'initial setup';

# And push it 
git remote add origin https://github.com/username/"[email protected]".git;
git push -u origin master
}

Ответ 5

Я только что опубликовал инструмент CLI, который создает новый проект на основе существующего репо и даже удаленно создает свой собственный на Github. https://github.com/theJacobDev/binit

Ответ 6

Это не совсем то, что вы спрашиваете, но это также может быть полезно для решения подобных проблем.

Существует инструмент для начальной загрузки репозитория Github из yaml конфигурации yaml https://github.com/g4s8/gitstrap.

Оно может:

  1. Создать новый репозиторий на Github
  2. Синхронизация с локальным каталогом
  3. Применять шаблоны (например, README со значками, конфиги CI, LICENSE и т.д.)
  4. Настроить webhooks для Github репо
  5. Пригласить соавторов

поэтому вы можете создавать шаблоны для похожих проектов вместо создания репозитория шаблонов и применять их с помощью файла конфигурации при создании нового репозитория Github с помощью этого инструмента.