Каков надлежащий рабочий процесс git для создания проекта с помощью "семенного" репо?

В качестве примера: предположим, что у вас есть персональный проект, например Angular Seed (который является отправной точкой для проекта Angular https://github.com/angular/angular-seed).

Теперь вы хотите использовать это как отправную точку для проекта (например, онлайн-фотоальбом).

Вы не должны просто создавать ветку, потому что вы не делаете вариации семенного проекта. Но github не позволит вам разветкить его, если это ваше собственное репо.

Итак, каков рабочий процесс для создания клона, который все еще может вносить изменения в исходный проект семени? Я думал, что это была вилка.

Ответы

Ответ 1

Я думаю, что правильный ответ здесь - использовать что-то вроде генераторов Йомен. (http://yeoman.io/) Вы хотите использовать репозиторий git с вашим исходным проектом в качестве генератора. Тем не менее, это не позволит вам постоянно вносить изменения в проект семени.

Решение с использованием двух пультов работает, но в конечном итоге проекты будут расходиться настолько, что это затруднит синхронизацию этих проектов.

Ответ 2

Я только что нашел этот ответ fooobar.com/questions/330268/..., а также комментарий (git рабочий процесс - используя один репо как основы для другого), которые вместе приводят меня к решению, которое мне нравится.

git clone -o boilerplate ssh://[email protected]/user/proj.git new_proj
Обозначение -o переименовывает начало координат в boilerplate, которое все еще можно использовать для изменения изменений.

Создайте новый пустой репозиторий github new_proj. Тогда
git remote add origin ssh://[email protected]/user/new_proj.git

Ответ 3

Что вы можете сделать:

  • инициализировать новый репо
  • ссылайтесь на репо angular как подмодуль этого нового репо
  • нажмите это новое репо в своем пространстве GitHub.

Таким образом, ваш новый проект:

  • вложенная папка, представляющая ваш проект семени (который вы не изменяете)
  • все ваши данные, специфичные для вашего проекта.

Моя проблема заключается в том, что начальный проект не является библиотекой. Он не живет в подкаталоге проекта. Это проект, когда вы начинаете, и вы строите оттуда.

Тогда достаточно простого клона, который вы нажмете на свое новое репо.
Но это не будет поддерживать отношения "fork" между двумя вашими репозиториями GitHub.
Вам придется потянуть один и нажать на другой через локальный клон.

Ответ 4

Вариант 1: клон/выборка/слияние

Клонировать ветвь master проекта семени по вашему выбору, например:

$ git clone -o react-starter-kit -b master --single-branch \
      https://github.com/kriasoft/react-starter-kit.git MyApp
$ cd MyApp

Вниз, вы можете вытащить и объединить обновления из проекта семени обратно в локальное репо, запустив:

$ git checkout master
$ git fetch react-starter-kit
$ git merge react-starter-kit/master
$ npm install

Вариант 2: clone/pull/diff

Клонировать проект семян и удалить его историю версий:

$ git clone https://github.com/kriasoft/react-starter-kit --depth=1
$ git clone https://github.com/kriasoft/react-starter-kit MyApp --depth=1
$ cd MyApp
$ rm -rf .git

Затем, когда вам нужно вытащить последние обновления из проекта семени обратно в локальное репо, вы можете перейти к исходному проекту семени, вытащить обновления (git pull), а затем сравнить эту папку с папкой проекта на используя хороший инструмент Diff (например, Beyond Compare), который позволяет сохранять и настраивать сеансы сопоставления папок.

Ответ 5

Я нашел зеркальное отображение шаблона в соответствии с этой статьей единственным способом работы для меня:

Клонировать шаблон и создать новый проект:

git clone --mirror https://github.com/mxstbr/react-boilerplate.git
cd react-boilerplate.git
git remote set-url --push origin https://github.com/gitUser/newProject

Обновите новый проект с изменениями из шаблона:

cd react-boilerplate.git
git fetch -p origin
git push --mirror