2013-10-31 40 views
30

我很高兴地使用vim作为提交的默认编辑器,并且不希望改变它。然而,在重新贴牌时,我发现自己压缩了几十次和几十次提交,使用像Textwrangler这样的交互式编辑器(除了顶级提交之外,用“squash”代替“pick”),我发现这些提交更容易。git rebase --editor =/something/other/than/vim? (为了更容易压扁)

有什么办法可以为一次性rebase命令指定备用编辑器吗?

我知道在vim我可以这样做:

:%s/pick/squash/ 

但有自己的小烦恼。

编辑 - 正如评论所说,你能够压制所有,但顶部犯下非常有效地去2号线和执行

:,$s/pick/squash/ 

(注意逗号和美元是原来的不同)

+5

在vim中,你可以做':,$ S /拾取/壁球/'这将改变所有出现在*电流行*直到文件的末尾。 –

+0

这是一个很棒的提示,谢谢Greg。是的,那是我所指的“小烦恼”。 –

+0

假设你有最新的vim版本或者安装了Tim Pope的vim-git插件,你可以使用':Cycle'或':Squash'命令。你甚至可能想要使用映射。也许使用':global'命令:':+,$ g /./ Squash' –

回答

41

尝试添加GIT_EDITOR环境变量的命令之前,就像这样:

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

例如,使用nano我会键入:

GIT_EDITOR=nano git rebase -i abcdef1234 
+0

既然你没有导出它,那么命令终止时该变量值是否会被重置? (这将是理想的,但我猜你需要手动重置) –

+1

该变量仅设置用于该命令的一个调用。尝试在没有'GIT_EDITOR'的情况下再次运行'git rebase',然后再次使用默认编辑器。 –

+0

真棒,这是正确的答案。虽然我觉得我害怕学习更多vim是不合理的 –

4

没有为您的所有交互式底垫一个更好的选择。

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

这是写在节点专门为互动变基的自定义应用程序CLI。

要安装:

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

或者纱:

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