Git allows certain commands to create or modify commits without opening the editor first, for example:
git commit --amend --no-edit
git commit --fixup=HEAD^
I have set rebase.autosquash
to true
, so that the todo list for an interactive rebase is automatically reordered. Is there a way to immediately perform the rebase, without opening the editor first, something like:
git rebase -i --no-edit HEAD~3
TL;DR answer: GIT_SEQUENCE_EDITOR=: git rebase -i HEAD~3
You can't stop git rebase --interactive
from running the "sequence editor" (that's the edit command on the "sequence file" containing the various pick, etc., commands). However, if you examine the interactive rebase script:
$ vim $(git --exec-path)/git-rebase--interactive
you'll find code like this near line 230 or so:
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" '"$@"'
}
Thus, you simply need to set the sequence editor to an "edit" command that does nothing and then succeeds, such as the shell's built-in :
command, or the true
command.
(Any of $GIT_SEQUENCE_EDITOR
, the configured sequence.editor
, or $GIT_EDITOR
will suffice for this, though the obvious best one to use is the first.)
As an illustration of torek's solution (GIT_SEQUENCE_EDITOR=:
) see Git 2.21 (Feb. 2019):
When GIT_SEQUENCE_EDITOR
is set, the command was incorrectly started when modes of "git rebase" that implicitly uses the machinery for the interactive rebase are run, which has been corrected.
See commit 891d4a0 (28 Jan 2019) by Phillip Wood (phillipwood
).
(Merged by Junio C Hamano -- gitster
-- in commit 69dd6e5, 05 Feb 2019)
implicit interactive rebase: don't run sequence editor
If
GIT_SEQUENCE_EDITOR
is set then rebase runs it when executing implicit interactive rebases which are supposed to appear non-interactive to the user.
Fix this by settingGIT_SEQUENCE_EDITOR=:
rather thanGIT_EDITOR=:.
来源:https://stackoverflow.com/questions/29094595/git-interactive-rebase-without-opening-the-editor