Как я могу пропустить патч при наборе вишни? - PullRequest
0 голосов
/ 31 октября 2018

Я начал сбор вишни с такой команды:

git cherry-pick A B C D

Допустим, у патчей A и B есть некоторые конфликты слияния, но я в итоге исправлю их все и git cherry-pick --continue. Когда я наконец добираюсь до C, я понимаю, что тот же самый код должен быть уже применен, и теперь патч пуст.

У меня есть опция git cherry-pick --allow-empty, но в моей истории останется пустой коммит, который мне не нужен. В идеале я хотел бы пропустить только этот патч (С). Однако нет git cherry-pick --skip. Я мог бы git cherry-pick --abort, но это потеряло бы всю мою работу с А и Б.

В качестве обходного пути я мог принять пустое, запомнить, какой это был, и затем удалить его с помощью git rebase -i B после окончания выбора вишни. Есть ли лучший способ?

Ответы [ 2 ]

0 голосов
/ 21 июля 2019

С Git 2.23 (Q3 2019) "git cherry-pick/revert" изучил новое действие "--skip".

Так в вашем случае: git cherry-pick --skip на C.

См. commit dcb500d , commit de81ca3 , commit 265ab48 , commit 918d1e6 , commit 6a1f904 (02 Июль 2019 года) Рохит Ашивал (r1walz) .
(Объединено с Junio ​​C Hamano - gitster - in commit d97c62c , 19 Jul 2019)

cherry-pick / revert: добавить опцию --skip

git am или rebase имеют флаг --skip, чтобы пропустить текущий коммит, если пользователь хочет сделать это.

В течение cherry-pick или revert пользователь может также пропустить коммит, но ему нужно использовать «git reset» (или в случае конфликтов «git reset --merge»), а затем «gi t». (cherry-pick | revert) --continue ', чтобы пропустить коммит.
Это более раздражает и иногда сбивает с толку со стороны пользователей.

Добавьте опцию --skip, чтобы упростить выполнение коммитов и сделать команды более согласованными.

Обновляйте сообщения советов, чтобы меньше рассказывать пользователям об этом громоздкий способ пропуска коммитов.

Так что вместо того, чтобы видеть:

Otherwise, please use 'git reset

   If you wish to skip this commit, use:

   git reset

Вы увидите:

 Otherwise, please use 'git cherry-pick --skip

 and then use:

   git cherry-pick --continue 
0 голосов
/ 31 октября 2018

Вы можете выйти из вишневого пика с git cherry-pick --quit. После этого A и B должны оставаться в вашей ветке, и вы продолжаете с git cherry-pick D.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...