Git: применить часть коммита к другой ветке - PullRequest
49 голосов
/ 08 июля 2011

Как я могу применить часть коммита из одной ветви в другую?Я понимаю, что могу выбрать вишню коммита, но мне нужно сделать еще один шаг и «выбрать вишню» некоторые изменения, внесенные этим коммитом, и применить их к другой (целевой) ветви.чистый способ сделать это, или я должен просто применить весь коммит, вручную отменить некоторые фрагменты и не забыть создать больше атомарных коммитов в будущем?

Ответы [ 2 ]

75 голосов
/ 08 июля 2011

git cherry-pick -n <SHA> будет вносить изменения, но не фиксировать их. Затем вы можете использовать git reset -p для удаления ненужных битов или git reset HEAD и git add -Ap для внесения только тех изменений, которые хотите.

12 голосов
/ 04 сентября 2013

Если части, которые вы хотите применить, могут быть указаны путем (т. Е. Вы не хотите указывать фрагменты в одном файле), возможно другое решение.

Один из подходов состоит в том, чтобы сформировать патч из коммита и применить его к вашей ветке.

С веткой, которую вы хотите изменить извлечено:

git show <SHA> -- <relevant paths> | git apply

Применит любые изменения в коммите SHA в путях relevant paths к вашей текущей рабочей копии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...