我正在尝试加快工作流程并在
~/.zshrc
中创建了一个别名:
alias update='git fetch origin; git rebase -i origin/master'
但问题是,它显然会打开 Vim 窗口询问我是否要选择/编辑/压缩提交。
我想让自己的生活更轻松。所以我想在这一行添加一些东西来自动关闭 Vim 窗口。
我已经让ChatGPT给我答案了,它告诉我的是:
git fetch origin; git rebase -i origin/master; vim -c "bd|q!"
我测试过,失败了。它不能自动关闭 Vim 窗口。
如果您的目标是在不打开编辑器窗口的情况下自动压缩提交,那么最简单的方法是:
GIT_SEQUENCE_EDITOR=true git rebase -i --autosquash BASE
作为别名,它看起来像这样:
[alias]
srebase = "!f() { GIT_SEQUENCE_EDITOR=true git rebase -i --autosquash \"$@\"; };f"
你的命令的问题是 Vim 命令直到 rebase 完成后才执行,而 rebase 直到你的编辑器返回才完成。无论如何,Vim 命令不会与任何其他已经打开的 Vim 交互,即使它同时运行,因为您还没有使用客户端-服务器协议,并且不知道您的版本是否编译过方式。
但是,如果你想做一些涉及编辑交互式 rebase 内容的奇特操作,那么你可以使用
GIT_SEQUENCE_EDITOR
环境变量来提供一个命令(采用一个参数,序列文件)来修改序列文件.该环境变量可以接受任意 shell 脚本(仅适用于 /bin/sh
和 /bin/sh
),因为它将被传递到 shell,就像任何其他编辑器配置一样。