Я новичок в git (и управлении версиями в целом), и я пытаюсь решить, как лучше всего реализовать мой рабочий процесс. Я работаю над (личным) проектом, который включает в себя множество «постоянных» ветвей, т. Е. Полностью разделяет программы, которые раздваиваются из общей базы кода и никогда не будут объединены в ведущую ветвь. (Это потому, что я ученый, работающий над симуляционной моделью, и я пробовал много нового, чтобы посмотреть, есть ли у них интересные результаты. Если они это сделают, я в настоящее время копирую всю папку проекта, чтобы я мог вернемся к нему позже. Я нацелен вместо этого использовать ветви git для этой цели.)В git, как я могу объединить функции, которые были реализованы в ветке «A» в ветку «B»?
Поскольку эти ветви постоянны, я хочу знать, есть ли простой способ использовать функцию, которую я реализовал в одном и передать его другому, сохраняя при этом различия между двумя ветвями. Например, предположим, что дерево моего репозитория выглядит следующим образом:
model_a
/
initial commit
\
model_b
В моем случае, model_a
и model_b
используют в широком смысле тот же код моделирования для моделирования две разные вещи. Они могут отличаться значениями некоторых параметров и/или некоторых деталей во внутренних циклах кода моделирования, но общая окружающая его инфраструктура будет одинаковой. Теперь, работая над branch_a
, предположим, что я реализовать новый способ визуализации результатов:
model_a --- model_a_with_visualisation_code
/
initial commit
\
model_b
То, что я хочу знать, есть ли команда мерзавец Я могу напечатать, что, за исключением конфликтов слияния, приведет это :
model_a --- model_a_with_visualisation_code
/
initial commit
\
model_b --- model_b_with_visualisation_code
другими словами, я хочу взять только те коммиты, которые были использованы, чтобы превратить model_a
в model_a_with_visualisation_code
, и применять копии этих фиксаций на конец model_b
отрасли. По крайней мере, я думаю, это то, чего я хочу.
Похоже, что git rebase
должен быть инструментом, который я хочу, но мне нелегко размахивать головой, и я не могу найти примеров, иллюстрирующих этот прецедент. Также кажется, что git rebase
удаляет старые версии коммитов, а не копирует их.
Я надеюсь, что вопрос ясен. Как я уже сказал, я новичок в git, и многие основные концепции все еще немного туманны для меня. Например, я не совсем уверен, являются ли метки в приведенных выше деревьями тегами или ветвями или просто коммиты. Если я неправильно понял, как что-то должно работать, я был бы признателен за любые разъяснения.
Это называется [сборка вишни] (https://www.kernel.org/pub/software/scm/git/docs/git-cherry-pick.html) – 1615903