在 bash 脚本中使用 git 交互式 rebase

在 bash 脚本中使用 git 交互式 rebase

我想创建一个 bash 脚本来自动执行我经常执行的一系列 Git 操作,以将未暂存的更改应用到早期提交,如下所示:

  • 隐藏更改;
  • 输入交互式变基;
  • 编辑有问题的提交;
  • 将藏匿物应用到它上面;
  • 完成变基。

问题是,其中一些操作会打开 Vim,并且我不确定如何使用 bash 脚本编辑/写入文件。我不想手动执行此操作。

有没有办法使用 bash 在 Vim 中自动编辑?有没有更好的方法来做到这一点,涵盖 Vim 不是默认编辑器的情况?

答案1

我想当 git 期望你输入描述性消息时,VIM 总是会打开。您可以通过“-m”选项向相关 git 命令提供消息来规避此问题。

例如,请参阅: git stash --help

...
git stash store [-m|--message <message>] [-q|--quiet] <commit>
...

评论中澄清后的附加信息:

VIM 中有一个非交互(原始 ex)模式:“vim -e”,从 bash 运行命令“ex”也应该可以工作。但您仍然需要将 vim 命令通过管道传输到其中。在 git rebase 调用之前滥用 $EDITOR env 应该可以做到这一点,例如( -s 用于静默模式):

export EDITOR="cat commands.vim | vim -es"

但是,当您已经滥用 $EDITOR env 时,您也可以编写另一个 bash 脚本来进行文件修改并将其用作编辑器:

export EDITOR="/path/to/your/script/"

无论如何,之后不要忘记重置你的 $EDITOR 。

相关内容