Git允许某些命令创建或修改提交而无需先打开编辑器,例如:
git commit --amend --no-edit
git commit --fixup=HEAD^
我已将rebase.autosquash
设置为true
,因此交互式rebase的待办事项列表会自动重新排序。有没有办法立即执行rebase,而无需先打开编辑器,如下所示:
git rebase -i --no-edit HEAD~3
GIT_SEQUENCE_EDITOR=: git rebase -i HEAD~3
你无法阻止git rebase --interactive
运行“序列编辑器”(这是包含各种选择等命令的“序列文件”上的编辑命令)。但是,如果您检查交互式rebase脚本:
$ vim $(git --exec-path)/git-rebase--interactive
你会在第230行左右找到这样的代码:
git_sequence_editor () {
if test -z "$GIT_SEQUENCE_EDITOR"
then
GIT_SEQUENCE_EDITOR="$(git config sequence.editor)"
if [ -z "$GIT_SEQUENCE_EDITOR" ]
then
GIT_SEQUENCE_EDITOR="$(git var GIT_EDITOR)" || return $?
fi
fi
eval "$GIT_SEQUENCE_EDITOR" '"$@"'
}
因此,您只需将序列编辑器设置为“编辑”命令,该命令不执行任何操作然后成功,例如shell的内置:
命令或true
命令。
($GIT_SEQUENCE_EDITOR
,配置的sequence.editor
或$GIT_EDITOR
中的任何一个都足以满足这一要求,尽管明显最好使用的是第一个。)
作为torek的solution(GIT_SEQUENCE_EDITOR=:
)的例证,参见Git 2.21(2019年2月):
设置GIT_SEQUENCE_EDITOR
时,在运行隐式使用交互式rebase的机制的“git rebase”模式时,该命令被错误地启动,该模式已被更正。
参见commit 891d4a0的Phillip Wood (phillipwood
)(2019年1月28日)。
(由Junio C Hamano -- gitster
--合并于commit 69dd6e5,2019年2月5日)
隐式交互式rebase:不运行序列编辑器
如果设置了
GIT_SEQUENCE_EDITOR
,那么rebase在执行隐式交互式rebase时运行它,这些rebase应该对用户显得非交互式。 通过设置GIT_SEQUENCE_EDITOR=:
而不是GIT_EDITOR=:.
来解决这个问题