Следует иметь в виду, что коммит - это наименьшая единица, учитываемая при принятии решения о том, что «уже объединено».Таким образом, есть компромисс: если вы не создадите отношения слияния, вы вполне можете получить ложный конфликт слияния в будущем, но если вы do создадите отношения слияния между ветвями только дляодно изменение, это может привести к тому, что какое-то будущее слияние не сможет принять другие изменения.
В 99% случаев отсутствие создания отношения слияния является меньшим злом, и поэтому я бы сказал, что вы 'на правильном пути с cherry-pick
.
Следующим шагом будет получение только требуемого изменения.Самый простой способ - использовать опцию --no-commit
(или -n
):
git cherry-pick -n <commit-id>
Тогда изменения из целевой фиксации будут размещены, но не зафиксированы.Вы можете удалить изменения в других файлах с помощью
git reset HEAD -- path/to/other/file
git checkout -- path/to/other/file
Если нужное изменение находится в том же файле, что и другие изменения, вы можете отменить удаление файла и затем повторно запустить его в «интерактивном» режиме с помощью
git reset HEAD -- path/to/file
git add -i path/to/file
(Подробнее об интерфейсе «интерактивного добавления» см. https://git -scm.com / docs / git-add . У него есть несколько способов выбрать, какие изменения включить.
После того как вы сделали выборочную постановку, вы можете зафиксировать, а затем удалить все оставшиеся нежелательные изменения из вашего рабочего дерева.