Изучаем Git. Урок 13.
git cherry-pick
Видеоурок
Конспект урока
Краткое содержание урока, основные инструкции для командной строки, полезные ссылки и советы.
Что такое git cherry-pick
Инструмент git cherry-pick позволяем скопировать коммиты из одной ветки в другую. Можно копировать коммиты и в пределах одной ветки, но практического смысла в этом мало
Чем копирование отличается от мерджа
При мердже не происходит физического копирования коммитов.
git cherry-pick именно копирует коммиты, создает новый коммит со своим хэшем, но с таким же содержимым
Для чего может понадобиться копировать коммиты
Чтобы взять из другой ветки у коллеги или самого себя часть кода, который может понадобиться для своей задачи.
Например
- Новый класс или компонент
- Новая функция
- Правки конфигов, без которых приложение не запустится
- Правка важной баги
Простое копирование коммита
Команда cherry-pick без параметров создает копию коммита hash с тем же commit message
Копирование коммита с переименованием
При использовании флажка -e открывается редактор кода, в котором можно переименовать коммит, то есть изменить commit message
Копирование кода без создания коммита
Флажок -n позволяет не создавать коммит, а только скопировать его содержимое. Это нужно в тех случаях, когда необходимо скопировать только часть кода из коммита, или наоборот, дополнить копируемый коммит
Конфликты при копировании
Конфликты при git cherry-pick возникают по тем же причинам, что и обычные конфликты при мердже веток. Разрешаются они аналогичным способом
После разрешения конфликтов нужно воспользоваться командой git cherry-pick --continue
Отменить копирование в процессе разрешения конфликта можно командой git cherry-pick --abort
Заключение
git cherry-pick - инструмент, который позволяет копировать коммиты из одной ветки в другую. Пользуйтесь им осторожно, помните, что в итоге в ветку мастер попадут оба коммита: копируемый и скопированный.
Прежде чем скопировать коммит, подумайте, не лучше ли вмерджить нужную ветку, особенно, если хотите скопировать несколько коммитов. Если вы уверены, что вся ветка не нужна, а нужны только конкретные коммиты, то git cherry-pick - отличный инстумент для этого
Спасибо за внимание и до встречи!