Подтвердить что ты не робот

Как я могу использовать git для шаблонов проектов?

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

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

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

Я очень ценю любые идеи. Мой google-fu мало что дает.

4b9b3361

Ответ 1

Я бы рекомендовал создать ветвь специально для любых изменений шаблона, которые вы хотите сделать. Но убедитесь, что вы запустили его из одного из более ранних коммитов, поэтому вы не получите изменений, специфичных для проекта, для вашего шаблона. Что-то вроде git checkout -b template_changes EARLY_COMMIT_SHA. Затем любые изменения шаблонов, которые вы уже сделали, вы можете выбрать: git cherry-pick TEMPLATE_CHANGE_SHA.

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

Чтобы переместить изменения вашего шаблона из проекта в репозиторий шаблона git, вы можете сделать git format-patch SHA_FROM_WHERE_TEMPLATE_BEGAN. Это создаст кучу файлов патчей, которые вам нужно будет скопировать в шаблон repo и запустить git apply 0001-... 0002-..., чтобы применить исправления, но это не очень весело.

Больше git -fu, чтобы сделать, было бы добавить шаблон repo в репо проекта git remote add template /path/to/template/repo. Возможно, вам придется играть с параметрами -t или -m или командой git remote set-head template template_branch:master (или что-то еще), если ветвь шаблона существует. Затем вы сможете указать свои изменения в шаблоне репо с помощью git push template template_branch. Если head_branch не задано, вам может потребоваться git push template template_branch:master.

Надеюсь, это сработает для вас. И получайте удовольствие!