Да, -x
действительно единственный способ сослаться на коммит, который вы вишней.
Если вы хотите сохранить родительскую связь своих коммитов, вам необходимо объединить ветви. Я предполагаю, что вы захотите объединить ветвь патча с веткой разработки, чтобы вы сохраняли свою работу должным образом изолированной.
Хотя, основываясь на том, как вы сформулировали вопрос, я думаю, что у вас может быть неправильное представление о коммитах. У них нет «ссылки» на ветку. Скорее, у каждой фиксации есть одно родительское сообщение, на которое они указывают. Объединяющие коммиты имеют несколько родителей, чтобы показать, какие коммиты они объединяются. Ветвь действительно является указателем на фиксацию. Конец может существовать на нескольких ветвях либо потому, что он был объединен, либо вы создали новую ветвь, основанную на ней, или более позднюю фиксацию.
Что делает git cherry-pick
, делает копию изменений, которые вы сделали в одной ветке и применяете их в другом месте. Вы делаете это, потому что не хотите, чтобы остальная часть истории сопровождалась этим конкретным изменением. Если вы хотите сохранить историю, вы должны будете git merge
или git rebase
изменениями от одной ветви к другой.
Другой вариант - создать промежуточную ветку, которая имеет только необходимые коммиты, и объединить ее с вашей ветвью патча (верните коммиты, которые вам не нужны). –