Объединить конкретное изменение в коммите из другой ветки - PullRequest
0 голосов
/ 08 июня 2018

Я хочу объединить изменение в коммите ветки разработки с другой веткой, используя git.Я пробовал git cherry-pick, но это приводит к изменению всего файла, а не к конкретному изменению.Кто-нибудь может помочь с этим?

1 Ответ

0 голосов
/ 08 июня 2018

Следует иметь в виду, что коммит - это наименьшая единица, учитываемая при принятии решения о том, что «уже объединено».Таким образом, есть компромисс: если вы не создадите отношения слияния, вы вполне можете получить ложный конфликт слияния в будущем, но если вы 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 . У него есть несколько способов выбрать, какие изменения включить.

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

...