Отменить локальные изменения, вызванные ошибкой git cherry-pick -n ‹hash›

Я пытаюсь получить несколько коммитов из моей ветки dev в свою ветку uat, используя «git cherry-pick -n hash», а затем использую только один git commit/push, чтобы отправить их в uat.

Предположим, у меня есть 5 коммитов, которые я хочу, поэтому я проверяю и вытаскиваю свою ветку uat и начинаю выбирать вишни из dev. Первые 4 выбора вишни успешны, но 5-й терпит неудачу с конфликтами слияния. Как мне вернуться в предыдущее состояние (после 4-го «git cherry-pick -n 4th_hash»?

«git reset --merge» отменить все изменения (включая первые 4, которые я хочу). «git cherry-pick --abort» говорит, что выбор вишни не выполняется.

Есть ли способ сделать это? Я пытаюсь создать скрипт bash, чтобы сделать это автоматически.


person Emerson Takahashi    schedule 08.12.2015    source источник


Ответы (1)


Я не уверен, как вы хотите сделать это автоматически в сценарии, если у вас есть конфликты. Но независимо от этого. Если вы хотите сохранить предыдущее состояние, я предлагаю вам удалить флаг -n. Итак, выполните:

git cherry-pick <hash>

Для каждого из коммитов, которые вы хотите, и как только вы это сделаете, склейте их вместе.

git reset --soft HEAD~5 
git commit

Где 5 — это количество выбранных вами вишен. Таким образом, он может работать точно так же со сценарием.

person Igal S.    schedule 08.12.2015
comment
Спасибо, Игал. Я попробую. - person Emerson Takahashi; 08.12.2015
comment
Я создаю задание Jenkins, которое попытается сделать все возможное автоматически, в моем примере, выберите первые 4 фиксации, затем зафиксируйте/отправьте их в uat и отправьте электронное письмо кому-то, сообщающему, что пятая фиксация имеет конфликты слияния. это нужно решить. - person Emerson Takahashi; 08.12.2015