0Pricing
Git & GitHub Professional Workflow · Урок

Выборочное применение фиксаций

Узнайте, как выборочно применять отдельные фиксации одной ветки к другой с помощью `git cherry-pick`.

«Выборочное применение фиксаций» — бесплатный урок Git & GitHub Professional Workflow на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Git & GitHub Professional Workflow, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Git & GitHub Professional Workflow содержит 4 уроков всего.

Выборочное перемещение фиксаций

Что делать, если Вам нужно только одно конкретное изменение из ветки, а не вся ветка? git cherry-pick позволяет применить одну фиксацию из любого места истории репозитория непосредственно к текущей ветке.

Это похоже на то, как Вы срываете одну вишню с дерева! На текущей ветке создаётся совершенно новая фиксация, дублирующая изменения исходной.

Когда использовать cherry-pick

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

Это идеальный случай для cherry-pick. Команда помогает перенести отдельные изменения, не добавляя несвязанную работу.

Основная команда

Основная команда проста: git cherry-pick <commit-hash>.

  • Сначала убедитесь, что Вы находитесь в ветке, куда хотите применить фиксацию.
  • Затем найдите уникальный идентификатор (хеш) нужной фиксации.
  • После этого Git создаст в текущей ветке новую фиксацию с теми же изменениями.
git cherry-pick <commit-hash>

Поиск хешей фиксаций

Для cherry-pick нужен хеш! Найти его можно с помощью git log.

Параметр --oneline особенно полезен для краткого просмотра:

git log --oneline

Подготовка сценария cherry-pick

Подготовим простой сценарий. Создадим ветку main и ветку feature/login. В ветке feature/login создадим фиксацию, которую хотим перенести в main.

Мы хотим перенести фиксацию «HOTFIX» в main.

git init my_project
cd my_project
echo "Initial content" > file.txt
git add file.txt
git commit -m "Initial commit"
git branch feature/login
git checkout feature/login
echo "Login feature added" >> login.txt
git add login.txt
git commit -m "Add basic login feature"
echo "Fix: Login button style" >> style.css
git add style.css
git commit -m "HOTFIX: Fix login button styling"

Выполнение cherry-pick

Теперь переключитесь обратно на ветку main и примените фиксацию «HOTFIX». Предположим, что хеш фиксации «HOTFIX: Fix login button styling» — abcdefg.

После выполнения команды в ветке main появится новая фиксация с теми же изменениями, что и в abcdefg. Используйте git log --oneline, чтобы увидеть её!

git checkout main
git cherry-pick abcdefg

Разрешение конфликтов при cherry-pick

Как и при слиянии, cherry-pick может привести к конфликтам, если одни и те же строки кода были по-разному изменены в обеих историях.

  • Git приостановит операцию и отметит конфликтующие файлы.
  • Вручную разрешите конфликты в файлах.
  • Добавьте разрешённые файлы в индекс с помощью git add.
  • Завершите операцию командой git cherry-pick --continue.
# After resolving conflicts in editor:
git add .
git cherry-pick --continue

Выбор нескольких фиксаций

Можно выполнить cherry-pick сразу для нескольких фиксаций.

Чтобы выбрать диапазон фиксаций (от hashA до hashB, не включая последнюю):

git cherry-pick hashA..hashB

Когда использовать (а когда не использовать)

Cherry-pick — мощный инструмент, но применять его нужно обдуманно.

  • Подходит для: срочных исправлений и переноса небольших отдельных изменений между несвязанными ветками.
  • Менее подходит для: регулярной интеграции больших наборов изменений: это может привести к дублированию фиксаций и усложнить чтение истории. Для полной интеграции веток лучше использовать слияние или перебазирование.

Быстрая проверка: назначение cherry-pick

В ветке feature/new-design есть фиксация, исправляющая критическую проблему со стилями. Вам нужно немедленно применить это исправление в ветке main, не объединяя всю функциональную ветку.

Повторение: целевые изменения

На этом уроке мы изучили git cherry-pick — полезную команду для применения определённых фиксаций к текущей ветке.

  • Она создаёт в целевой ветке новую фиксацию с теми же изменениями.
  • Она идеально подходит для срочных исправлений и переноса отдельных изменений.
  • Вам понадобится хеш фиксации, который обычно находят с помощью git log --oneline.
  • Будьте готовы разрешать конфликты, как и при слиянии.

Освоив cherry-pick, Вы получите точный контроль над историей проекта!

Часто задаваемые вопросы

Урок «Выборочное применение фиксаций» бесплатный?

Да — полный текст урока «Выборочное применение фиксаций» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Git & GitHub Professional Workflow, подпишись на CoddyKit PRO. Курс Git & GitHub Professional Workflow содержит 4 уроков всего.

Чему я научусь в уроке «Выборочное применение фиксаций»?

Узнайте, как выборочно применять отдельные фиксации одной ветки к другой с помощью `git cherry-pick`. Ты практикуешь Git & GitHub Professional Workflow с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Git & GitHub Professional Workflow?

Предыдущий опыт не требуется. Git & GitHub Professional Workflow на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Выборочное применение фиксаций»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Git & GitHub Professional Workflow?

Да. Каждый урок Git & GitHub Professional Workflow включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Ручное разрешение конфликтов слияния
  2. Интерактивное перебазирование истории
  3. Выборочное применение фиксаций
  4. Повторное использование разрешений конфликтов с Git Rerere
← Назад к Git & GitHub Professional Workflow