MyTetra Share
Делитесь знаниями!
Как в Git применить изменения, сделанные коммитом в одной ветке, в другой ветке?
Время создания: 08.08.2025 10:14
Текстовые метки: git, применить, скопировать, изменения, коммит, одна, другая, первая, вторая, ветка, cherry-pick
Раздел: Компьютер - Программирование - Системы контроля версий (VCS) - Git
Запись: xintrea/mytetra_syncro/master/base/1754637250kgdtnik0w6/text.html на raw.github.com

Имеется ситуация: есть ветка (пусть она называется первой), в которой сделан какой-то коммит. Требуется скопировать изменения, которые делает этот коммит, в другую (вторую) ветку. В первой ветке изменения должны так же остаться.


Для решения этой задачи можно использовать механизм cherry-pick. Действия следующие.



1. Узнать в первой ветке хеш коммита, который надо скопировать.


2. Переключиться на целевую (т. е. вторую) ветку, в которую будут добавляться изменения из существующего коммита.


3. Дать команду:



git cherry-pick <хеш_исходного_коммита>



а лучше:



git cherry-pick -x <хеш_исходного_коммита>



Что делает опция -x ? Дело в том, что cherry-pick не "применяет" коммит к новой ветке. Cherry-pick берет изменения, которые делал указанный коммит, и делает те же изменения в целевой ветке. При этом получается новый коммит. И информации о том, как получились эти изменения, нигде не остается: они могли возникнуть как угодно. Их мог сделать разработчик, вручную меняя код, и они могли быть сделаны через cherry-pick.


Поэтому, чтобы хоть как-то ориентироваться в истории, нужна опция -x . Она автоматически добавит в сообщение нового коммита строку типа:



(cherry picked from commit abc123456789)



Что делать если при cherry-pick возникли конфликты изменений? Надо разрешить их вручную, затем добавить исправления в индекс:



git add .



После чего надо продолжить копирование:



git cherry-pick --continue



В результате изменения, сделанные коммитом в одной ветке, будут скопированы в другую.


Так же в этом разделе:
 
MyTetra Share v.0.67
Яндекс индекс цитирования