如何自动关闭终端中Git变基触发的Vim窗口?
解决Git Rebase -i自动关闭Vim交互窗口的问题
问题原因
你之前尝试的vim -c "bd|q!"无效,是因为这个命令是在git rebase -i执行结束后才启动的新Vim进程,而git rebase -i本身弹出的交互窗口是它自己调用的Vim实例,两者完全无关,所以无法关闭那个窗口。
可行解决方案
方案1:使用--no-edit参数跳过交互
直接给git rebase -i添加--no-edit参数,它会默认保留所有提交的pick操作,跳过交互编辑步骤:
alias update='git fetch origin; git rebase -i --no-edit origin/master'
方案2:通过指定Git编辑器自动退出
如果需要自定义默认操作(比如合并提交),可以临时设置GIT_EDITOR环境变量,让编辑器直接输出预设指令并退出。最简单的方式是用true命令(直接成功退出,Git会使用默认的指令列表):
alias update='git fetch origin; GIT_EDITOR=true git rebase -i origin/master'
如果需要默认执行squash等操作,可以生成对应的指令列表,比如把所有提交合并到第一个:
alias update='git fetch origin; GIT_EDITOR="sed -i \"2,\$s/pick/squash/\"" git rebase -i origin/master'
内容的提问来源于stack exchange,提问作者Caiqian Cheng
相关产品推荐
相关产品推荐

