Могу ли я представить «git rebase» как серию «черриков»? - PullRequest
1 голос
/ 13 мая 2019

Похоже, что у "git rebase" есть дополнительная резервная логика для обработки сбоев слияния:

Falling back to patching base and 3-way merge...

Что он там делает и как мне нужно вызывать мои вишневые кирки, чтобы получить такое же поведение?

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

1 Ответ

5 голосов
/ 13 мая 2019

Большинство git rebase команд на самом деле do run git cherry-pick.

Откат, который вы видите, происходит из одной формы git rebase, которая по историческим причинам не использует git cherry-pick.Эта одна форма используется, когда вы вызываете non -интерактивный git-rebase и , не использующий какие-либо опции, которые заставляют его использовать новый и улучшенный метод rebase-invoking.

Старая форма обычно производит тот же эффект.Он состоит из использования git format-patch для преобразования каждого коммита в патч, а затем использования git am --3way для применения всех отформатированных патчей.Опция --3way сообщает git am, что если патч нельзя применить вслепую, он должен использовать строки index в каждом отформатированном патче, чтобы получить часть того, что git cherry-pick сделал бы автоматически.

Если вы хотите, чтобы rebase использовал напрямую git cherry-pick, вы можете:

  • предоставить опцию -k или
  • предоставить опцию -m,или
  • поставьте опцию -s <em>strategy</em>, или
  • поставьте опцию -X <em>extended-option</em>, или
  • используйте интерактивную перебазировку (-i или --interactive), или
  • используйте параметр --autosquash или
  • используйте параметр -p или (Git 2.18+) -r.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...