Git: Генерация патча для всех коммитов, сделанных в ветке "feature" без ссылки на идентификаторы коммитов.

Мы поддерживаем две версии нашего приложения в двух ветках: free а также master (master являясь премиум-версией нашего приложения). Эти ветви довольно похожи, но master филиал имеет несколько дополнительных функций приложения, которые free версии нет, поэтому нам нужно поддерживать две ветки постоянно.

Регулярно нам нужно исправлять ошибки или добавлять free филиал, который нам нужно применить к master ветвь, когда они сделаны. Когда у меня будет такая работа, я начну новую ветку на основе free называется, например, newfeature, Когда я закончу эту функцию, newfeature имеет X новых коммитов.

Прежде чем слить newfeature Вернуться в free Я хотел бы знать, какую команду я могу использовать для создания патча из всех коммитов, содержащихся в newfeature что теперь необходимо применить к master, В настоящее время я просто делаю это:

git format-patch aa99f9..e94904

Насколько я знаю, как делать, мне нужно искать конкретные идентификаторы коммитов, когда я разветвляюсь newfeature и последний коммит в newfeature, который является тормозом. Меня не интересуют идентификаторы коммитов, и я не хочу их вводить.

Я хочу, чтобы была одна команда, которую я мог бы последовательно использовать, в которой git будет определять , какие коммиты я имею в виду. Это каждый раз одна и та же модель: данная ветка newfeature Я хочу сгенерировать патч коммитов от общего предка newfeature а также free до последней фиксации на newfeature,

Существует ли какое-либо выражение набора изменений, которое избавит от необходимости вручную искать идентификаторы фиксации?

PS: AFAIK, я не могу использовать git rebase чтобы сделать эту задачу, потому что это объединит все free перейти на master, Я просто хочу объединить коммиты, которые являются уникальными для newfeature перейти на master,

1 ответ

В частности, вы просите:

git format-patch `git merge-base newfeature free`..newfeature

Вы могли бы, вероятно, сэкономить время, выполнив это:

git checkout master
git cherry-pick `git merge-base newfeature free`..newfeature

В зависимости от вашего рабочего процесса, вам может потребоваться создать патч, прежде чем вы добавите свою функцию. то есть:

git checkout newfeature
git rebase free
git format-patch free

Звучит, но ваш рабочий процесс можно улучшить, просто основав премиум бесплатно и объединив бесплатные функции в премиум филиал.

Другие вопросы по тегам