有没有办法预先提供 git rebase 与用于 rebase 的列表

Is there a way to presupply git rebase with the list to use for rebase

而不是 git rebase -i 和手动编辑是否有可能将 git rebase 与 pick/drop/squash 列表作为文本文件提供,或者我是否需要重定向 GIT_EDITOR到提供它的脚本?

您需要使用 GIT_EDITORGIT_SEQUENCE_EDITOR 就地编辑文件。该程序将接收文件名作为其参数,并且可以是 shell 命令,因此您可以这样做:

GIT_SEQUENCE_EDITOR='sed -i -e '\''2,$s/^pick/fixup/'\' git rebase

两个编辑器的区别在于GIT_SEQUENCE_EDITOR只适用于变基待办事项列表,而不适用于其他内容,如提交消息,而GIT_EDITOR适用于两者。因此,例如,如果您想在不提示的情况下自动压缩 git commit --squashgit commit --fixup 创建的所有压缩和修复提交,您可以这样做:

GIT_SEQUENCE_EDITOR=true git rebase -i --autosquash main

这会在没有提示的情况下自动接受 squash 和 fixup 命令,但由于 squash 提交,仍然让您的普通编辑器编辑提交消息。