git rebase --editor=/something/other/than/vim? (为了更容易压扁)

问题描述 投票:0回答:4

我很高兴使用 vim 作为我的默认提交编辑器,并且不想更改它。然而,当谈到变基时,我发现自己压缩了几十个提交,我发现使用像 Textwrangler 这样的交互式编辑器更容易(在除了顶部提交之外的所有提交中用“squash”替换“pick”)。

有没有办法为一次性 rebase 命令指定备用编辑器?

我知道在 vim 中我可以做到:

:%s/pick/squash/

但这也有它自己的小烦恼。

编辑 - 如评论中所述,您可以通过转到第二行并执行来非常有效地压缩除顶部提交之外的所有提交

:,$s/pick/squash/

(注意逗号和美元与原文不同)

git vim editor git-rebase
4个回答
76
投票

尝试在命令之前添加

GIT_EDITOR
环境变量,如下所示:

GIT_EDITOR=<editor of choice> git rebase <...>

例如,要使用

nano
,我会输入:

GIT_EDITOR=nano git rebase -i abcdef1234

18
投票

对于所有交互式变基,还有一个更好的选择。

https://github.com/sjurba/rebase-editor

它是一个用 Node 编写的自定义 CLI 应用程序,专门用于交互式变基。

安装:

npm install -g rebase-editor
git config --global sequence.editor rebase-editor 

或用纱线:

yarn global add rebase-editor
git config --global sequence.editor rebase-editor 

1
投票

使用 Git 2.40(2023 年第 1 季度),就像“

git var GIT_EDITOR
(man)”抽象了复杂的逻辑来选择背后使用哪个编辑器,“
git var
”现在支持
GIT_SEQUENCE_EDITOR 
.

请参阅 Sean Allred (vermiculus)

commit 4c3dd93(2022 年 12 月 17 日)。
(由 Junio C Hamano --
gitster
--
合并于 commit 48475f4,2022 年 12 月 28 日)

var
:添加
GIT_SEQUENCE_EDITOR
变量

签署人:Sean Allred

Git 在编辑序列器“todo”文件时使用的编辑器程序是通过检查一些环境变量来确定的,并且还受配置变量的影响。
引入“

git var GIT_SEQUENCE_EDITOR
(man)”让用户无需了解具体细节即可访问逻辑的最终结果。

这在精神上与引入“git var”的

44fcb49
(Teach
GIT_EDITOR
about git var GIT_EDITOR,2009-11-11,Git v1.6.6-rc0 -
merge
)非常相似。

git var
现在包含在其 手册页中:

GIT_SEQUENCE_EDITOR

文本编辑器用于在运行时编辑“todo”文件

git rebase -i
。与
GIT_EDITOR
一样,该值的解释方式是 使用时的外壳。

优先顺序是:

  • 那个
    $GIT_SEQUENCE_EDITOR
    环境变量,然后
  • sequence.editor
    配置,然后
  • git var GIT_EDITOR
    的值。

0
投票

就我而言,我设置了一个用于变基的交互式编辑器。但是,我发现它无法执行我想要的操作,因此,如果我想为偶尔的调用指定替代编辑器,则可以执行以下操作:

git -c sequence.editor=vim rebase -i upstream/main

-c sequence.editor=<value>
设置该单个命令的
sequence.editor
配置键的值。您可以对任何命令使用此语法,并且它有时会派上用场。

© www.soinside.com 2019 - 2024. All rights reserved.