Я хотел бы иметь возможность сделать это:
git cherry-pick --interactive hash-0..hash-n-1 # fantasy command
и получить тот же рабочий процесс, что и интерактивная rebase: появляется буфер редактора, содержащий:
pick hash-0
pick hash-1
pick hash-2
...
pick hash-n-1
где я могу удалить любые нежелательные коммиты, squash
их вместе или edit
, чтобы сделать паузу между выборами, чтобы выполнить некоторую ручную фиксацию (например, commit --amend
) и все такое.
Обратите внимание на то, что pick
интерактивной перестановки таналогично похожа на cherry-pick
.
Теперь вышеуказанную операцию можно выполнить, выполнив сначала вишневый выбор, а затем интерактивную перестановку, что неудобно. То есть:
$ git tag old-head # mark starting point for later rebase
$ git cherry-pick hash-0..hash-n-1 # get everything first
$ git rebase --interactive old-head # okay now rebase "in-branch" to fix it up
Это не только неудобно из-за двух шагов, но и потому, что может потребовать разрешения конфликтов в коммитах, вы даже не хотите, чтобы они были отброшены на этапе переустановки.