Я пытаюсь объединить некоторые конкретные (не все) из dev в master. И используется ниже команда, которая выдает исключение.
C:\Users\arrchana\New_Code\Paymentev\AmazonPaymente2etestserv\A2paymente2etestservService> git cherry-pick 5dc6112
error: Commit 5dc6112 is a merge but no -m option was given.
fatal: cherry-pick failed
Как решить эту проблему? Есть ли другой способ получить конкретную фиксацию от разработчика и объединить ее с основной веткой?
Вы не можете выбрать вишневое слияние, потому что вишневый выбор применяет изменения, сделанные коммитом по сравнению с его родителем, а слияние имеет двух родителей (какой из них должен выбрать git?). Вместо этого Cherry выбирает одного из родителей слияния. См. вопрос, который я связал выше, для получения дополнительной информации.
Есть ли другой способ добиться этого без использования команды cherry-pick?
@CaiusJard Примечание: это может измениться с Git 2.21: stackoverflow.com/a/34782687/6309





Вы пытаетесь выбрать фиксацию слияния. Хотя это можно сделать, скорее всего, это не то, что вы хотите.
Если вы пытаетесь применить изменения из определенный диапазон коммитов, вам нужно будет найти коммиты (теги или sha1-хэши) для всех этих коммитов, просмотрев журнал.
Затем вы можете запустить git cherry-pick hash1 hash2 hash3.... Убедитесь, что эти хэши находятся в том порядке, в котором они были зафиксированы!
Если вашим конкретным изменением является в пределах коммит слияния, это становится сложнее.
Первый: Не вносите никаких изменений, кроме разрешения конфликтов в коммите слияния!
С этим не по пути: вы можете git diff 5dc6112 коммит слияния или git show 5dc6112, чтобы увидеть, содержит ли он ваши соответствующие изменения. Если это так, перейдите:
git [diff/show] 5dc6112 | patch -p1
это применит diff к вашему текущему рабочему каталогу. Затем вы можете зафиксировать эти изменения.
Возможный дубликат git cherry-pick говорит: «... 38c74d - это слияние, но опция -m не указана»