Git

Как выбрать Cherry Pick в Git

Как выбрать Cherry Pick в Git
git cherry pick - это функция слияния Git. Но есть небольшая разница в git cherry pick и git merge. Кроме того, вариант использования отличается. Давайте сначала посмотрим, как работает git merge, а затем сравним его с git cherry pick. Таким образом, вы поймете, когда использовать git merge, а когда использовать git cherry pick.

Допустим, у вас есть репозиторий Git. Вы работаете над владелец ветвь, и вы сделали несколько коммитов (А, В и С) на владелец филиал также.

Теперь, внезапно, у вас есть отличная идея. Итак, вы создаете еще одну ветку Новая идея. Затем вы начали делать коммиты (E, F и G) там.

Вы также внесли некоторые изменения в владелец ветку снова и добавил новый коммит ЧАС.

Теперь, если ваша новая идея удалась, вы можете объединить Новая идея ветвь к владелец ветка. Допустим, вы слили это. Это создаст новую фиксацию я как вы можете видеть на рисунке ниже. Новый коммит будет содержать все (все изменения в коммитах E, F, а также грамм) филиала Новая идея.

Теперь, допустим, вы не хотите объединять все коммиты ветки Новая идея к владелец ветка. Вы хотите только объединить изменения (только изменения diff) в фиксации F к владелец ветка. Здесь на помощь приходит git cherry pick. Git Cherry Pick позволяет вам это сделать. Вы просто находите хэш коммита, который хотите выбрать, и применяете его к нужной ветке. Очень простой.

В этой статье я покажу вам, как выбирать вишню в Git. Итак, приступим.

Рабочий процесс Git Cherry Pick:

В этом разделе я собираюсь настроить репозиторий Git таким образом, чтобы вы поняли, почему используется git cherry pick и как выбирать вишню в Git.

Сначала инициализируйте пустой репозиторий Git Cherry-Pick-Demo / следующим образом:

$ git init вишневый выбор-демонстрация

Теперь перейдите в репозиторий следующим образом:

$ cd cherry-pick-demo /

Теперь создайте основной.c файл со следующим содержанием:

Теперь добавьте файл в промежуточную область следующим образом:

$ git add .

Теперь зафиксируйте изменения следующим образом:

$ git commit -m 'начальная фиксация'

Теперь создайте .gitignore файл со следующим содержанием:

Добавьте файл в промежуточную область.

$ git add .

Зафиксируйте изменения:

$ git commit -m 'добавлен .gitignore файл '

Как видите, у меня сейчас 2 коммита в моем владелец ветка.

$ git log --oneline

Теперь я хочу отправить свой локальный репозиторий Git на удаленный сервер Git, чтобы другие люди могли работать с этим репозиторием. Вы также можете использовать GitHub здесь. Я буду использовать для этого локальный SSH-сервер здесь.

Итак, добавьте URL-адрес удаленного репозитория Git следующим образом:

$ git удаленное добавление источника git @ git.linuxhint.com: ~ / Cherry-Pick-demo.мерзавец

Теперь нажмите владелец перейти к удаленному репозиторию Git следующим образом:

$ git push origin master

Теперь скажем боб хочет внести свой вклад в проект. Итак, он клонировал репозиторий Git на свой компьютер.

$ git clone git @ git.linuxhint.com: ~ / Cherry-Pick-demo.git myproject

Теперь Боб переходит в каталог своего проекта.

$ cd myproject /

У него также есть 2 коммита, которые я добавил.

$ git log --oneline

Теперь Боб создает контрольная работа ветка, чтобы опробовать его идеи.

$ git checkout -b тест

Он решает изменить возвращаемое значение на константу EXIT_SUCCESS от stdlib библиотека.

Добавляет изменения в область подготовки.

$ git add .

Фиксирует изменения.

$ git commit -m 'использовал EXIT_SUCCESS вместо 0 в качестве возвращаемого значения'

Теперь он решает использовать функцию printMessage () распечатать сообщение. Итак, он пишет функцию.

Он снова фиксирует изменения.

$ git add .
$ git commit -m 'добавлена ​​функция printMessage ()'

Затем Боб использует функцию в программе.

Он снова фиксирует изменения.

$ git add .
$ git commit -m 'использовал функцию printMessage () для печати сообщения'

Теперь у bob есть следующие коммиты в контрольная работа ветка.

Теперь Боб отправляет тестовую ветку в удаленный репозиторий Git.

$ git push origin test

Теперь вам звонит Боб и рассказывает о внесенных им потрясающих изменениях. Итак, вы загрузили изменения из удаленного репозитория Git в свой локальный репозиторий.

$ git fetch

Теперь вы видите новую ветку происхождение / тест.

Вы также нашли 3 новых коммита, которые сделал Боб.

$ git log --oneline origin / test

Теперь вы хотите знать, какие изменения внес Боб.

$ git log -p происхождение / тест

Вы решили не заменять возвращаемое значение на EXIT_SUCCESS, как это сделал Боб.

Вам нравится концепция использования функции для печати сообщений.

Вам тоже нравится этот коммит.

Итак, вы хотите объединить 2 из 3 сделанных бобом коммитов. Если вы использовали git merge для слияния теста ветки, тогда будут применены все 3 коммита. Но с функцией git cherry pick вы можете объединять только те коммиты, которые вам нравятся.

Обратите внимание: когда вы выбираете коммиты в Git, вы всегда начинаете с самого старого коммита и постепенно переходите к самому новому.

Раньше я собирал вишню, основной.c файл выглядит следующим образом.

Теперь давайте выберем самый старый из двух коммитов, 9a4e532, следующим образом:

$ git вишневый выбор 9a4e532

Конфликт слияния! Это может случиться.

Теперь откройте основной.c файл и исправить конфликт слияния.

Окончательный файл должен выглядеть следующим образом.

Теперь добавьте изменения в область подготовки.

$ git add.

Теперь зафиксируйте изменения следующим образом:

$ git cherry-pick - продолжить

ПРИМЕЧАНИЕ: Вы также можете использовать git commit и здесь. Тебе решать. я предпочитаю git cherry-pick -продолжить поскольку он будет автоматически использовать сообщение фиксации из фиксации, которую я выбираю.

Теперь введите здесь сообщение о фиксации и сохраните файл.

Должен быть добавлен новый коммит.

Теперь Cherry выбирает следующую фиксацию следующим образом:

$ git вишневый выбор 08ba5e7

Нет конфликта слияния. большой! Новый коммит должен быть добавлен автоматически.

Как видите, я получаю именно то, что хотел. Я объединил только те коммиты, которые мне нужны.

Итак, вот как вы выбираете вишню в Git. Спасибо, что прочитали эту статью.

Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...
Как изменить левую и правую кнопки мыши на ПК с Windows 10
Совершенно нормально, что все устройства компьютерной мыши эргономичны для правшей. Но есть мышиные устройства, специально разработанные для левшей ил...